Получение отсортированного массива

BelStudent

целеустремлённый чел
Получение отсортированного массива

Есть массив $temp=array(array('value'=>'бла бла', 'num'=>121212''));
Пример части исходного массива ( print_r()):
PHP:
Array  
(      [0] => Array      
   (  [value] => 3.27018762     [num] => 0   )   
 [1] => Array
  (   [value] => 17.37840354    [num] => 1   )
 [3] => Array  
 (     [value] => 1.63933204     [num] => 3   )
После сортировки asort получил:

PHP:
Array 
 (      [29] => Array        
   (      [value] => 0.01148074   [num] => 29     )   
     [4] => Array        
  (   [value] => 0.58602648     [num] => 4      )  
 [31] => Array 
 (    [value] => 1.13886524    [num] => 31   )
Собственно 2 вопроса:
1)Как оно узнало что мне нужна сортировка именно по этому полю value?
3)Как взять первые 3 значения отсортированного массива (не по числовому индексу же к ним обращаться)?
 

DiMA

php.spb.ru
Команда форума
а где вопрос под номером 2?

3)
$keys=array_keys($array)
$array[$keys[0, 1 или 2]]
или reset() next() и т.д.
или цикл foreach до трех и break
 

BelStudent

целеустремлённый чел
Автор оригинала: DiMA
а где вопрос под номером 2?
Промахнулся клавишей вместо 2) написал 3) :)
А теперь по делу:
foreach не катит - выводит по индексам (т.е. мне возратило temp[0],temp[1],temp[2])
array_keys - выводт ключи (0,1,2,)
$keys[0] в твоём примере будет 0, после сортировки массива $array[$keys[0]] возратит опять же перый элемент ($array[0])
 

DiMA

php.spb.ru
Команда форума
ты пишешь глупость или не можешь объяснить свою мысль
указанные мной три способа - одинаковые по результату, все выдадут первые 3 элемента любого массива (именно то, что ты написал в вопросе)

> возратит опять же перый элемент ($array[0])

нет, $array[0] не возвратит первый элемент. Смотри свое сообщение - первый элемент имееи имя "29". $keys[0] от array_keys вернет именно "29" и само значение элемента.
 

BelStudent

целеустремлённый чел
Sorry, чел. Ты прав, через array_keys работает.
А на первый вопрос ты не знаешь ответа?
 

DiMA

php.spb.ru
Команда форума
Согласно документации значения массива должны не должны быть массивами, как у тебя. Я не видел такого неожиданного использования asort. Ты же посунул вместо строки/числа (одного элемента) - подмассив, поэтому у пхп два варианта: либо сортировать "Array" и тогда выйдет глупость (сортировки фактически не будет), либо взять первый элемент подмассива. Судя по твоему наблюдению - пхп выбирает второй вариант. В доке про такое не вижу (там вообще нихрена не уточняется). Поэтому так использовать на свой страх и риск.
 

DiMA

php.spb.ru
Команда форума
я обычно использую ksort, массив (2х мерный) наполняется при чтении базы через ключ по spritnf(с нужными полями), массив выводится при построении таблицы
т.е. никаких производственных затрат кода на сортировку
 
Сверху