Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
Array durch anderes Array sortieren [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr
ebiz-webhosting
- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
Array durch anderes Array sortieren


 
Johny
07-07-2006, 17:31 
 
Hallo,

folgendes Problem: Ich lasse mir über diesen Codeblock ein Array füllen, dass der ID eines Forums die jeweilige Prozentzahl der erstellten Beiträge eines Benutzers bezogen auf die Gesamtzahl der Posts eines Forums zuordnet:


//
// The users most active forum
//

$sql = "SELECT forum_id, forum_posts
FROM " . FORUMS_TABLE . "";
$result = $db->sql_query($sql);

while ( $row = $db->sql_fetchrow($result) )
{
$fids = $row['forum_id'];
$fposts = $row['forum_posts'];

// Second: get the user's post count for each forum
$sqlsub = "SELECT COUNT(post_id) AS posts
FROM " . POSTS_TABLE . "
WHERE poster_id = '" . $profiledata['user_id'] . "'
AND forum_id = '$fids'";
$resultsub = $db->sql_query($sqlsub);

while ( $rowsub = $db->sql_fetchrow($resultsub) )
{
$uposts = $rowsub['posts'];

$percentage = array();

if ( $uposts != '0' )
{
//
// Lets do some calculating work
//
$percentage['a'] = $uposts / $fposts;
$percentage[$row['forum_id']] = $percentage['a'] * 100;
}
else
{
$percentage[$row['forum_id']] = '0.00';
}

echo "Prozentsatz der Einzelforen:
" . $row['forum_id'] . " " . $percentage[$row['forum_id']];
}
}

Die ausgelesenen Werte sind auch soweit korrekt, nur müsste jetzt das Array absteigend anhand des Prozentsatzes sortiert werden sowie nur der höchste Prozentsatz ausgegeben werden.

Das Sortieren per array_multisort() bereitet insofern Probleme, dass der zu sortierende Block bereits ein Array beinhaltet:


//
// Lets do some calculating work
//
$percentage['a'] = $uposts / $fposts;
$percentage[$row['forum_id']] = $percentage['a'] * 100;
$percentage[$row['forum_id']] =
array_multisort($percentage[$row['forum_id']], SORT_DESC, SORT_NUMERIC);


...funktioniert natürlich nicht.
Somit ist auch keine Limitierung des Arrays machbar.

Wie lässt sich dieses Problem umgehen?

 
Slava
07-07-2006, 18:10 
 
wie kommt es dazu, dass du schon 87 Beiträge gemacht hast und die Forenregel nicht beachtest?
1) deine Aufgabe lässt sich vermutlich mit JOIN
und einer einziger abfrage erledigen
2)DESC ist ein Bezeichner der die Felder mit "order by" absteigend sortieren lässt

 
ramadan
07-07-2006, 23:44 
 
mit Я im logo ist der ritmuss besser?

 
Slava
08-07-2006, 01:06 
 
Original geschrieben von ramadan
mit Я im logo ist der ritmuss besser?
Hi ramadan!
bist du ein Aussererdische?.http://www.woweb.ru/catalog/530/1077312086/img/1.gif
du hast schon 2 Beitraege in diesem Forum gemacht, die ich nicht nachvollziehen kann.
wenn du Unterhaltung suchst, dann gibt es hier eine Plauderecke

- -

Alle Zeitangaben in WEZ +2. Es ist jetzt 18:05 Uhr.