PHP Сортировка массива ASC

Я пытаюсь сортировать следующий массив, но по какой-то нечетной причине он, похоже, не работает

$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