Это действительно эзотерический вопрос, но мне искренне любопытно. Я использую usort сегодня впервые за много лет, и мне особенно интересно, что именно происходит. Предположим, у меня есть следующий массив:
$myArray = array(1, 9, 18, 12, 56);
Я мог бы отсортировать это с помощью usort:
usort($myArray, function($a, $b){
if ($a == $b) return 0;
return ($a < $b) ? -1 : 1;
});
Я не на 100% понимаю, что происходит с двумя параметрами $a и $b. Что они собой представляют и что представляют. Я имею в виду, я мог бы предположить, что $a представляет текущий элемент в массиве, но с чем именно это сравнивается? Что такое $b?
Я мог бы увеличить свой массив, чтобы включить строки:
$myArray = array(
array("Apples", 10),
array("Oranges", 12),
array("Strawberries", 3)
);
И выполните следующее:
usort($myArray, function($a, $b){
return strcmp($a[0], $b[0]);
});
И это отсортировало бы мои дочерние массивы в алфавитном порядке на основе значения индекса [0]. Но это не дает никакой ясности относительно того, что такое $a и $b. Я знаю только то, что соответствует образцу, который я ищу.
Может ли кто-нибудь дать некоторую ясность о том, что на самом деле происходит?