Вернуться   Дизайнерский форум » ВЕБ-ПРОГРАММИРОВАНИЕ » ASP, Perl, PHP и MySQL

Свертование массива по заданным индексам

Обсуждение темы Свертование массива по заданным индексам в разделе ASP, Perl, PHP и MySQL, часть категории ВЕБ-ПРОГРАММИРОВАНИЕ; Вот многомерный массив php: Код: $array = array('CN' => array('field1'=>1, 'field2'=>2, 'field3'=>3), 'ON' => array('field1'=>4, 'field2'=>8, 'field3'=>7), 'RW' => array('field1'=>15, 'field2'=>10, 'field3'=>5)); Стоит ...


Закрытая тема
 
Опции темы
Старый 25.06.2008, 15:49   #1
Вот многомерный массив php:
Код:
$array = array('CN' => array('field1'=>1,  'field2'=>2,  'field3'=>3),
               'ON' => array('field1'=>4,  'field2'=>8,  'field3'=>7),
               'RW' => array('field1'=>15, 'field2'=>10, 'field3'=>5));
Стоит задача свернуть массивы по полям field1, field2, field3.
Чтобы в результате получился массив сумм array(20, 20, 15).

Есть ли стандартная функция, которая может свернуть массив таким образом?
Если использовать объединение, то там нет возможности задавать конкретные индексы.
В цикле все значения собирать я считаю неправильно. Даже в 1С есть "Свернуть таблицу"
 
Старый 25.06.2008, 15:49
Ссылки
Старый 25.06.2008, 17:03   #2
Цитата:
Сообщение от Anthony Посмотреть сообщение
Даже в 1С есть
Нашёл показатель.
1С для подобного вида работ и создавалась!!!
Свернуть в твоём употреблении обозначает сложение рядов?

Это табличная а не массивная функция, используемая в средах, производящих табличные вычисления.
php это тебе не Excel
похожей функции я не видел
 
Старый 25.06.2008, 17:17   #3
Да вообще все гораздо проще оказалось.
Либо делаем в лоб вот так:
PHP код:
foreach($array as $id => $item){
            foreach(
$item as $idf => $field){
                
$total_rows[$id][$idf] = $total_rows[$id][$idf] + $field;
            }
        } 
либо банально сложение матриц :
PHP код:
$arr[1][1][1]="10";
$arr[2][1][1]='2";
$arr[3][1][1]="8";

$arr[1][2][1]="34";
$arr[2][2][1]='
2";
$arr[3][2][1]="6";

$arr[1][3][1]="3";
$arr[2][3][1]='7";
$arr[3][3][1]="23";

$arr[1][1][1]+$arr[1][2][1]+$arr[1][3][1
 
Старый 25.06.2008, 17:29   #4
PHP код:
foreach($array as $id => $item)

    foreach(
$item as $idf => $field)
    { 
        
$total_rows[$id][$idf] = $total_rows[$id][$idf] + $field
    } 
}  

можно ещё проще:
foreach(
$array as $id => $item)

    foreach(
$item as $idf => $field)
    { 
        
$total_rows[$id][$idf] *= 2
    } 
}  

ты на каждой интерации прибавляешь к значению поля значение этого-же поля
а твой подход с матрицами я вообще не понял:
-нафига тебе понадобился трёхмерный массив
-результатом ты получаешь скаляр!!!
 
Старый 25.06.2008, 17:45   #5
Makarenya, скаляр я и пытался получить.
Но про $total_rows[$id][$idf] *= 2; я не очень понял
 
Старый 25.06.2008, 18:13   #6
А по первому посту мне показалось, что тебе результатом нужен ряд
(то есть массив, содержащий суммы всех полей из двумерного)

а тут говоришь - скаляр...

а по первому - я дурак, не доглядел.
но работать это всё равно не будет, так как ты копируешь!!! один массив в другой.

так ничего у тебя работать не будет
$total_rows[$id][$idf] = $total_rows[$id][$idf] + $field; -

нуна вот так
$total_rows[$idf] = $total_rows[$idf] + $field;

или сокращённо
$total_rows[$idf] += $field;

Последний раз редактировалось Асмодиан; 25.06.2008 в 18:17..
 
Старый 25.06.2008, 18:13
Закрытая тема


Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
передача массива через mail () Подсолнух ASP, Perl, PHP и MySQL 6 24.01.2007 13:45
Загрузка массива мувиков как одного anton Технологии Flash 0 07.10.2005 15:25
Сортировка массива Dariola HTML, CSS, JavaScript 4 30.04.2004 11:47
JavaScript и передача массива Spy ASP, Perl, PHP и MySQL 2 20.05.2003 15:04
JavaScript и передача массива Илья HTML, CSS, JavaScript 0 06.05.2003 20:33


Текущее время: 15:32. Часовой пояс GMT +4.

Реклама на форуме Условия размещения рекламы
Биржа ссылок Заработай на сайте!
Тарифный план «Lite»
Место: 1000 Мб
Трафик: неограниченный
Панель управления
Заказать ТП «Lite»
Тарифный план «Normal»
Место: 2000 Мб
Трафик: неограниченный
Поддержка скриптов
Заказать ТП «Normal»
Тарифный план «Profy»
Место: 7000 Мб
Трафик: неограниченный
Поддержка скриптов
Заказать ТП «Profy»
Тарифный план «Места хватит!»
Место: 25 ГБ
Трафик: неограниченный
Поддержка SSI, ssh
Заказать ТП «Места хватит!»
Дизайнерский форум