[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Сортировка массива
maximka787
Помогите отсортировать один массив, на основании одного из полей с СОХРАНЕНИЕМ КЛЮЧЕЙ. Вопрос больше на ДА - это возможно и НЕТ - это нельзя. Используя функцию array_multisort я убедился, что она работает, но она почему-то создала новый массив с новыми ключами. В оф. доках про это видимо и написано.

Исходный массив, мне нужно отсортировать по цене
$a = array(
'1' => array('name' => 'Товар 1', 'price' => 900),
'2' => array('name' => 'Товар 2', 'price' => 1200),
'3' => array('name' => 'Товар 3', 'price' => 300)
);


Мне нужно получить точную копию массива $a только в порядке 3, 1, 2.
$a = array(
'3' => array('name' => 'Товар 3', 'price' => 300),
'1' => array('name' => 'Товар 1', 'price' => 900),
'2' => array('name' => 'Товар 2', 'price' => 1200)
);


_____________
..Работает - не трогай!
casper - gg
array_multisort($a, SORT_STRING);

- вот так почти, но немного не то. Либо массив нужно подстраивать, либо допиливать по своим предпочтениям. Основной ответ - да, возможно.
Ради эксперимента:
$a = array(
'1' => array('0' => 900, '1' => 700),
'2' => array('3' => 1200, '2' => 300),
'3' => array('4' => 300, '1' => 555)
);

array_multisort($a);

получилось
$a =
Array
(
[
0] => Array
( [0] => 900
[1] => 700 )

[
1] => Array
( [3] => 1200
[2] => 300 )

[
2] => Array
( [4] => 300
[1] => 555 )
)

короч. что то не работает как ожидалось, или мануал не понимаю !?!
casper - gg
и будет тебе счастье maximka787, оказалось вот так работает:
foreach($a as $key=>$arr){
$aprice[$key]=$arr['price'];
$aname[$key]=$arr['name'];
}

array_multisort($aprice, SORT_NUMERIC, $aname, $a);

просто не в тот мануал смотрел, нужно ж в официальный смотреть user posted image
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.