En programmation PHP, nous avons souvent besoin de trier des tableaux multidimensionnels pour répondre à différents besoins, comme le tri par prix, le tri par ordre alphabétique, etc. Cependant, le tri des tableaux multidimensionnels est plus complexe que celui des tableaux unidimensionnels. Cet article explique comment utiliser PHP pour trier des tableaux multidimensionnels.
Tout d'abord, nous devons comprendre les fonctions de tri en PHP : sort(), rsort(), asort () , arsort(), ksort(), krsort(), uksort(), usort(). Ces fonctions conviennent au tri de tableaux unidimensionnels. Si vous souhaitez trier un tableau multidimensionnel, nous devons utiliser une fonction de rappel pour trier le tableau.
La fonction de rappel fait référence à une fonction passée en paramètre dans d'autres fonctions. En PHP, les fonctions de rappel sont généralement utilisées pour trier, filtrer, parcourir, etc. Nous pouvons utiliser une fonction anonyme ou une fonction avec un nom personnalisé comme fonction de rappel.
Ce qui suit est un exemple d'utilisation d'une fonction anonyme comme fonction de rappel :
$array = array( array('price' => 45.50), array('price' => 15.00), array('price' => 20.15), array('price' => 25.00), array('price' => 90.10), array('price' => 9.99), ); usort($array, function($a, $b) { if ($a['price'] == $b['price']) return 0; return ($a['price'] < $b['price']) ? -1 : 1; }); print_r($array);
Le résultat de sortie est le suivant :
Array ( [0] => Array ( [price] => 9.99 ) [1] => Array ( [price] => 15 ) [2] => Array ( [price] => 20.15 ) [3] => Array ( [price] => 25 ) [4] => Array ( [price] => 45.5 ) [5] => Array ( [price] => 90.1 ) )
$array = array( array('name' => 'John', 'age' => 25, 'score' => 80), array('name' => 'Mary', 'age' => 28, 'score' => 90), array('name' => 'Bob', 'age' => 20, 'score' => 95), array('name' => 'Jack', 'age' => 30, 'score' => 85), array('name' => 'Lisa', 'age' => 22, 'score' => 85), ); // 按照年龄降序、分数升序、名字升序排序 usort($array, function($a, $b) { if ($a['age'] == $b['age']) { if ($a['score'] == $b['score']) { return strcmp($a['name'], $b['name']); } else { return ($a['score'] > $b['score']) ? 1 : -1; } } else { return ($a['age'] < $b['age']) ? 1 : -1; } }); print_r($array);
Array ( [0] => Array ( [name] => Mary [age] => 28 [score] => 90 ) [1] => Array ( [name] => Jack [age] => 30 [score] => 85 ) [2] => Array ( [name] => Lisa [age] => 22 [score] => 85 ) [3] => Array ( [name] => John [age] => 25 [score] => 80 ) [4] => Array ( [name] => Bob [age] => 20 [score] => 95 ) )
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!