2 Stimmen

Einige Klarstellungen zur Funktion uasort

Ich benötige die uasort() Funktion, aber ich verstehe nicht, wie man die Argumente in der Funktion erhält... Das gegebene Beispiel ist für mich nicht so klar. Wie wird die cmp Funktion seine Argumente bekommt? Kann mir das jemand erklären?

<?php
// Comparison function
function cmp($a, $b) {
    if ($a == $b) {
        return 0;
    }
    return ($a < $b) ? -1 : 1;
}

// Array to be sorted
$array = array('a' => 4, 'b' => 8, 'c' => -1, 'd' => -9, 'e' => 2, 'f' => 5, 'g' => 3, 'h' => -4);
print_r($array);

// Sort and print the resulting array
uasort($array, 'cmp');
print_r($array);
?>

0voto

Paul Bain Punkte 4336

Die Reihenfolge, in der die Elemente aus dem Array ausgewählt werden, sollte keinen Unterschied für die Funktionsweise Ihrer Vergleichsfunktion machen.

uasort wird so lange angewendet, bis jedes Element in Ihrem Array nach dem Vergleich sortiert ist, den Sie in Ihrer cmp Funktion.

Aktualisiert

Wenn Sie wirklich wissen wollen, wie es sortiert ist, schauen Sie sich den PHP-Quelltext an, das Array hat zuerst zend_hash_sort angewendet, die die zend_qsort Vergleichsfunktion, die, soweit ich weiß, nur nach Wert sortiert.

Versuchen Sie, Ihre cmp-Funktion in die folgende zu ändern, um zu sehen, was los ist:

function cmp($a, $b) {
    echo "a=$a, b=$b"; // add this to see what's going on
    if ($a == $b) {
        return 0;
    }
    return ($a < $b) ? -1 : 1;
}

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