1422 Stimmen

Wie man ein mehrdimensionales Array nach Wert sortiert

Wie kann ich dieses Array nach dem Wert des Schlüssels "order" sortieren?

Auch wenn die Werte derzeit sequenziell sind, werden sie es nicht immer sein.

Array
(
    [0] => Array
        (
            [hashtag] => a7e87329b5eab8578f4f1098a152d6f4
            [title] => Blume
            [order] => 3
        )

    [1] => Array
        (
            [hashtag] => b24ce0cd392a5b0b8dedc66c25213594
            [title] => Frei
            [order] => 2
        )

    [2] => Array
        (
            [hashtag] => e7d31fc0602fb2ede144d18cdffd816b
            [title] => Bereit
            [order] => 1
        )
)

-2voto

tony gil Punkte 9305

Seien wir ehrlich: PHP hat keine einfache Out-of-the-Box-Funktion, um jedes Szenario des Array-Sortierens ordnungsgemäß zu behandeln.

Dieses Routine ist intuitiv, was bedeutet, dass das Debugging und die Wartung schneller erfolgen:

// Automatisches Auffüllen des Arrays
$tempArray = array();
$annotations = array();
// ... etwas Code
// SQL $sql ruft das Ergebnisarray $result ab
// $row[0] ist die ID, wird jedoch in falscher Reihenfolge bevölkert (stammt von
// mehreren SELECT-Anweisungen, die verschiedene Dimensionen für dasselbe DATUM bevölkern
// zum Beispiel
while($row = mysql_fetch_array($result)) {
    $needle = $row[0];
    arrayIndexes($needle);  // Erstellen eines parallelen Arrays nur mit IDs
    $annotations[$needle]['someDimension'] = $row[1]; // Was auch immer
}
asort($tempArray);
foreach ($tempArray as $arrayKey) {
    $dataInOrder = $annotations[$arrayKey]['someDimension'];
    // .... mehr Code
}

function arrayIndexes ($needle) {
    global $tempArray;
    if (!in_array($needle, $tempArray)) {
        array_push($tempArray, $needle);
    }
}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X