Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: сортировка многомерного массива
Форумы портала PHP.SU » PHP » Напишите за меня, пожалуйста » сортировка многомерного массива

Страниц (1): [1]
 

1. vadka - 23 Ноября, 2015 - 01:27:08 - перейти к сообщению
Здравствуйте!
Помогите пожалуйста решить проблему.
Есть массив примерно такого вида:
PHP:
скопировать код в буфер обмена
  1.  
  2. $arr = array("string1" => array(0 => array("text", "text2", "6"),
  3.                                                1 => array("text", "text2", "5"),
  4.                                                2 => array("text", "text2", "4")),
  5.                  "string2" => array(0 => array("text", "text2", "7"),
  6.                                              1 => array("text", "text2", "1"),
  7.                                              2 => array("text", "text2", "8")),
  8.                  "string3" => array(0 => array("text", "text2", "2"),
  9.                                              1 => array("text", "text2", "3"),
  10.                                              2 => array("text", "text2", "9")),
  11.                 );

Нужно отсортировать массив по последнему значению, от большего числа к меньшему (то есть 9,8,7,6,5,4...) и вывести. Подскажите, как такое реализовать?
2. Faraon-san - 23 Ноября, 2015 - 09:54:19 - перейти к сообщению
3. vadka - 23 Ноября, 2015 - 11:56:02 - перейти к сообщению
usort удалит ключи, а мне нужны неизменными.
Например я вывожу информацию из массива так:

PHP:
скопировать код в буфер обмена
  1. foreach ($arr as $key => $value)
  2. foreach ($value as $k => $v)
  3. echo "$key => $k => $v[0] = $v[1] = $v[2]<br>";


Мне нужно что бы вывод отсортировался по $v[2], но при этом $key и $k должны соответствовать $v[0], $v[1], $v[2]
4. Sail - 23 Ноября, 2015 - 12:25:57 - перейти к сообщению
vadka пишет:
usort удалит ключи, а мне нужны неизменными.

Посмотрели-бы перечень функций справа по приведенной ссылке... Не понял
uasort()
(Добавление)
Действительно ли надо в порядке 9,8,7,6,5,4... несмотря на то, что элементы этой последовательности, идущие подряд относятся к разным массивам ("stringX")?
Тогда простой сортировкой дело не ограничится.
5. vadka - 23 Ноября, 2015 - 21:51:21 - перейти к сообщению
Sail Да, действительно, так и нужно. Можно все преобразовать в одномерный массив и потом сортировать через usort, но насколько будет хорошим такое решение?
6. Sail - 24 Ноября, 2015 - 09:39:53 - перейти к сообщению
vadka, можно, например, сделать так:
Спойлер (Отобразить)

 

Powered by ExBB FM 1.0 RC1