Array durch anderes Array sortieren

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Array durch anderes Array sortieren

    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:

    Code:
    //
    // 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:

    Code:
    //
    // 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?
    Zuletzt geändert von Johny; 07.07.2006, 18:12.

  • #2
    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
    Zuletzt geändert von Slava; 07.07.2006, 18:23.
    Slava
    bituniverse.com

    Kommentar


    • #3
      OffTopic:
      mit Я im logo ist der ritmuss besser?

      Kommentar


      • #4
        Original geschrieben von ramadan
        OffTopic:
        mit Я im logo ist der ritmuss besser?
        Hi ramadan!
        bist du ein Aussererdische?.
        du hast schon 2 Beitraege in diesem Forum gemacht, die ich nicht nachvollziehen kann.
        wenn du Unterhaltung suchst, dann gibt es hier eine Plauderecke
        Slava
        bituniverse.com

        Kommentar

        Lädt...
        X