Правила     Закладки     Карма    Календарь    Журналы    Помощь    Поиск    PDA    Чат   
        СМС-ки
   
Пейджер выключен!
 
Фильтр авторов:    показать 
  скрыть
  Ответ в темуСоздание новой темыСоздание опроса

> Сортировка массива
maximka787  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 1228
Пользователь №: 2705
На форуме: 9 лет, 3 месяца, 25 дней
Карма: 1




Помогите отсортировать один массив, на основании одного из полей с СОХРАНЕНИЕМ КЛЮЧЕЙ. Вопрос больше на ДА - это возможно и НЕТ - это нельзя. Используя функцию 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)
);


--------------------
..Работает - не трогай!
PM
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
bestxp  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



орангутанг
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 2004
Пользователь №: 36605
На форуме: 3 года, 9 месяцев, 15 дней
Карма: 111






--------------------
PMПисьмо на e-mail пользователюСайт пользователяICQ
    1   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
casper - gg  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Абориген
*****

Профиль
Группа: Пользователь
Сообщений: 216
Пользователь №: 42190
На форуме: 11 месяцев, 29 дней
Карма: 10




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 - 12.04.2016 - 17:41
PMПисьмо на e-mail пользователю
    1   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
casper - gg  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Абориген
*****

Профиль
Группа: Пользователь
Сообщений: 216
Пользователь №: 42190
На форуме: 11 месяцев, 29 дней
Карма: 10




и будет тебе счастье maximka787, оказалось вот так работает:
foreach($a as $key=>$arr){
$aprice[$key]=$arr['price'];
$aname[$key]=$arr['name'];
}

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

просто не в тот мануал смотрел, нужно ж в официальный смотреть user posted image
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
  Быстрый ответ
Информация о Госте
Введите Ваше имя
Кнопки кодов
Для вставки цитаты, выделите нужный текст и
НАЖМИТЕ СЮДА
Введите сообщение
Смайлики
:huh:  :o  ;) 
:P  :D  :lol: 
B)  :rolleyes:  <_< 
:)  :angry:  :( 
:unsure:  :blink:  :ph34r: 
     
Показать всё

Опции сообщения  Включить смайлики?
 Включить подпись?
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:

Опции темы Ответ в темуСоздание новой темыСоздание опроса