Я пытаюсь сортировать следующий массив, но по какой-то нечетной причине он, похоже, не работает
$sizearray = Array ( [0] => 39 [1] => 40 [2] => 41 [3] => 42 [4] => 43 [5] => 44 [6] => 45 [7] => 39 [8] => 40 [9] => 41 [10] => 42 [11] => 43 [12] => 44 [13] => 45 [14] => 39 [15] => >40 [16] => 41 [17] => 42 [18] => 43 [19] => 44 [20] => 45 ); $sizearray = array_values(sort(array_unique($sizearray)));
Появляются следующие предупреждения:
>Warning: array_values() [function.array-values]: The argument should be an array in >/home/starlet/public_html/productlist.php on line 349
Примечание. Если я удалю функцию sort()
функция array_values()
работает нормально.
Это потому, что sort
на месте и возвращает логическое значение.
Из документов :
bool sort ( array &$array [, int $sort_flags = SORT_REGULAR ] )
Вам, вероятно, нужно будет сделать что-то вроде этого:
$sizearray = array_unique($sizearray); sort($sizearray); $sizearray = array_values($sizearray);
Из документов :
Возвращаемые значения
Возвращает
TRUE
при успешномFALSE
илиFALSE
при сбое.
Обратите внимание, как он не говорит «Возвращает отсортированный массив». Это происходит потому, что sort()
сортируется на месте.
<?php $fruits = array( "Orange1", "orange2", "Orange3", "orange20" ); sort($fruits, SORT_NATURAL | SORT_FLAG_CASE); foreach ($fruits as $key => $val) { echo "fruits[" . $key . "] = " . $val . "\n"; } ?> The above example will output: fruits[0] = Orange1 fruits[1] = orange2 fruits[2] = Orange3 fruits[3] = orange20