Как отсортировать массив по последнему элементу в строке

kumich

Новичок
Как отсортировать массив по последнему элементу в строке

Подскажите, пожалуйста, новичку, как отсортировать массив по последнему элементу в каждой строке

есть вот такой массив

val[0] = (2, 3, 4)
val[1] = (1, 6, 8)
val[2] = (3, 3, 3)
val[3] = (2, 2, 6)

Как подобный массив отсортировать по последнему элементу в строке? И, скажем, если последние элементы одинаковые - дополнительным критерием сортировки будет предпоследнее значение в строке.
 

zerkms

TDD infected
Команда форума
читать мануал, раздел функций для работы с массивами
 

kumich

Новичок
zerkms

кое-какие соображения появились. А как ссумировать поэлеметно две и больше строки массива (количество элементов в строках одинаково).

Вот скажем как в верхнем массиве, чтобы

2 + 1 +3 + 2
3 + 6 +3 + 2
4 + 8 +3 + 6

ТОлько в общем виде. Как реализовать, только, пожалуйста, если можно, более подробный дай совет :)
 

Vallar_ultra

Любитель выпить :)
array_walk - а там хоть складывай, хоть вычитай, че хочешь делай...
 

kumich

Новичок
Фанат

Да, немного в курсе. Я просто новичок совсем, а массив для меня не слишком простой. Как 3 *4.

Array ( [1] => Array ( [0] => Array ( [0] => 1 [1] => 1 [2] => 0 [3] => 0 [4] => 11 [5] => 1 [6] => 2 ) ) [4] => Array ( [0] => Array ( [0] => 1 [1] => 0 [2] => 0 [3] => 1 [4] => 1 [5] => 11 [6] => 0 ) [1] => Array ( [0] => 1 [1] => 1 [2] => 0 [3] => 0 [4] => 31 [5] => 12 [6] => 2 ) ) [2] => Array ( [0] => Array ( [0] => 1 [1] => 0 [2] => 1 [3] => 0 [4] => 0 [5] => 0 [6] => 1 ) [1] => Array ( [0] => 1 [1] => 0 [2] => 0 [3] => 1 [4] => 12 [5] => 31 [6] => 0 ) ) [3] => Array ( [0] => Array ( [0] => 1 [1] => 0 [2] => 1 [3] => 0 [4] => 0 [5] => 0 [6] => 1 ) ) )

Вот примерно он такой. Так вот в таком массиве для начала нужно проссумировать столбцы подмассива (если там несколько строк). А потом отсортировать по последнему элементу подмассива весь массив. А если элементы одинаковы - то по предпоследнему. Вот, блин, некоторая сложность массива давит на восприятие отдельных операций.
 

Фанат

oncle terrible
Команда форума
а ты их не воспринимай. Эти операции. Ты их делай =)
просто делай.
по очереди.
глаза боятся, а руки делают.

если в курсе про циклы, то какая проблема перебрать в цикле массив val?
 

kumich

Новичок
Фанат

Просто вывести массив использовав цикл я могу. Могу посчитать простенький массив выше "вручную".

А вот сделать это автоматом не получается, потому что не знаю, какие нужно ввести условия для цикла для решения этой задачи.
 

kumich

Новичок
Фанат

ну, скажем, в том цикле, что я использовал для массивов раньше (foreach) - там просто выводились нужные значения.

А здесь нужно как-то сообщить программе, что если встречается в подмассиве ключи больше нуля, значения этой строчки нужно добавлять до аналогичных значений первой строки с ключем [0]

[4] => Array ( [0] => Array ( [0] => 1 [1] => 0 [2] => 0 [3] => 1 [4] => 1 [5] => 11 [6] => 0 ) [1] => Array ( [0] => 1 [1] => 1 [2] => 0 [3] => 0 [4] => 31 [5] => 12 [6] => 2 ) )
 

Фанат

oncle terrible
Команда форума
чего-чего?
сначала у нас есть только сортировка.
потом появдяется загадочное суммирование
теперь выясняется, что суммирование, на самом деле, это "добавлять до аналогичных значений".
в каждом новом сообщении новая задача.
и долго эта сказка про белого бычка будет продолжаться?
Ты САМ-то знаешь, что тебе нужно?
А ОДИН РАЗ и до конца сформулировать можешь? Нет? Ну тогда и сюда ходить бесполезно!
 

kumich

Новичок
Фанат

1. Задачу с сортировкой я решил сам. На простом примере. Решу и с этим массивом. О чем отписался выше 17.04.07 16:53.

2. Суммирование и добавлять до аналогичных значений в данном случае выступают синонимами. В данном случае имелось ввиду, что для всех

ключей которые выше нуля

(как в примере 17.04.07 21:52)

[0] => Array
[1] => Array

делать операцию

value[0][0] + value[1][0]

value[0][1] + value[1][1]

value[0][2] + value[1][2]
 

Фанат

oncle terrible
Команда форума
так ты хотел сказать "прибавлять к аналогичным значениям"?
 

Фанат

oncle terrible
Команда форума
интересный у тебя лексикон.

ну и в чем твоя проблема?
не можешь поместить внутрь одного цикла другой?
 

Румата

Новичок
kumich
Помимо циклов foreach есть еще и другие. Распиши, что ты хочешь получить например, для элемента с произвольным индексом i.

value[0][0] - это имеется ввиду значение элемента массива с индексом [0][0] ?
 

Фанат

oncle terrible
Команда форума
Румата
зачем ему другие?
он написал, что ему нужно.
сложить элементы всех массивов
 

Румата

Новичок
Ну пусть еще чего-нибудь узнает.
Ведь проблема выеденного яйца не стоит. Равно как и сортировкой. Просто ведь нужна функция, которая сделает все мыслительную работу за меня. Я скажу : "Хочу так" и вуаля, все есть.

kumich, можно взять бумажку с ручкой и написать аккуратно, что тебе надо, по шагам. А потом переведи на язык, которые будет понятен машине твоей и программируй.
 

kumich

Новичок
Румата

Да, я это имел ввиду. Что в том большом массиве 17.04.07 17:19

есть строка с ключем [4], к примеру. Берем ее потому, что она в свою очередь состоит не из одной строки, а из двух.

[0] и [1]

а те в свою очередь состоят кажlая из равного количества элементов [0][1][2][3][4][5][6]

вот их то и нужно сложить попарно

а value написал, просто чтобы как-то обозначить этот элемент.

а хочу я получить что-то типа

если ключ в массиве больше 0 (а в данном случае он есть 1)

тогда попарно сложить элементы массива этих двух строк [0] и [1]

[0] + [0][0]
[1] + [0][1]
[2] + [0][2]
[3] + [0][3]
[4] + [0][4]
[5] + [0][6]
[6] + [0][6]
 

Фанат

oncle terrible
Команда форума
тебе обязательно получить результат в том же самом массиве? В другом не устроит?

в любом случае, просуммируй ПОКА без проверки - нулевой это ряд или нет.
упрощай задачу. а усложнать будешь после того, как решишь.
андестенд?

-~{}~ 18.04.07 00:58:

и ты на вопрос не ответил. язык проглотил?

не можешь поместить внутрь одного цикла другой?
 
Сверху