Dengue: array sortieren

Hallo, ich habe zwei Arrays, die ich auf ne bestimmte Weise sortieren muss. Um euch das näher zu erläutern, habe ich hier ein kleines Beispielscript:

--------------------------------------------------------------------
<?php

$username = array("Monika", "Hannes", "Frank");

$geld = array("300", "200", "500");

sort($geld);

for($i=0;$i<=2;$i++) {

echo '

<table>
      <tr>
        <td>' . $username[$i] . '</td>
        <td>' . $geld[$i] . '</td>
      </tr>
    </table>

';

}

?>
--------------------------------------------------------------------

Ausgabe (ohne sort($geld)):
Monika 300
Hannes 200
Frank  500

Ausgabe (mit sort($geld)):
Monika 200
Hannes 300
Frank  500

So und genau das ist das Problem, ich weis nicht, wie ich die ursprüngliche Zuordnung wieder herstellen kann, aber halt nach Geld sortiert.

Es soll so aussehen:
Hannes 200
Monika 300
Frank  500

Wie kann ich usernamen und geld miteinander verbinden und sortieren?

Hoffe ich konnte euch mein Problem anschaulich erklären und hoffe auf Hilfe.

Danke

MfG
Dengue

  1. Hallo Dengue,

    Nehme einfach ein Array für die User und für das Geld:

    $user = array("Monika" => 300,
    "Hannes" => 200,
    "Frank" => 500);

    asort($user); // Sortiert nach Wert

    foreach ($user as $key => $val)
      echo $key. ": ".$val."\n";

    Gruß,
    Dodwin

    1. Danke für die wirklich blitzschnelle Antwort, ich werde das dann gleich ma in mein Projekt einbauen.

      MfG
      Dengue

  2. echo $begrüßung;

    ich habe zwei Arrays, die ich auf ne bestimmte Weise sortieren muss.
    $username = array("Monika", "Hannes", "Frank");
    $geld = array("300", "200", "500");

    Du hast zwei Arrays mit automatisch vergebenen Keys. Die Zuordnung Monika zu 300 kann auch über die Keys erfolgen. Beide Werte haben den Schlüssel 0.

    sort($geld);

    Wenn du nun das $geld sortierst, und die Zuordnung zu Username nicht verlieren willst, musst du eine Sortierfunktion verwenden, die die Keys beibehält und nicht die Werte sortiert und dann die Keys neu durchnummeriert. Es empfiehlt sich hier asort().

    Du hast nun ein sortiertes $geld und musst in der Reihenfolge der Elemente durchlaufen, nicht anhand von Zahlen, die mit den Keys übereinstimmen. foreach durchläuft ein Array anhand seiner Elemente:

    foreach ($geld as $key => $value)

    $geld[$key] (bzw. $value) und $username[$key] bilden nun immer noch ein Paar, und die Anzeigereihenfolge wird durch die Anordnung in $geld bestimmt.

    for($i=0;$i<=2;$i++) {
      echo '
        <table>
          <tr>
            <td>' . $username[$i] . '</td>
            <td>' . $geld[$i] . '</td>
          </tr>
        </table>
      ';

    Möchtest du nicht lieber die Tabelle außerhalb der for-Schleife beginnen und beenden und innerhalb nur neue Zeilen hinzufügen?

    echo "$verabschiedung $name";