Группируйте строки 2d-массива по первому столбцу и создавайте подмассивы внутри каждой группы [дубликат]Php

Кемеровские программисты php общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Группируйте строки 2d-массива по первому столбцу и создавайте подмассивы внутри каждой группы [дубликат]

Сообщение Anonymous »

У меня есть большой массив (чтение из файла)

Код: Выделить всё

$data = array(
array(134, 'Field_A_134', 'Field_B_134'),
array(134, 'Field_C_134', 'Field_D_134'),
array(134, 'Field_E_134', 'Field_F_134'),
array(180, 'Field_A_180', 'Field_B_180'),
array(70, 'Field_A_70', 'Field_B_70'),
array(180, 'Field_C_180', 'Field_D_180'),
...
);
и я хочу сгруппировать в другой массив по первому ключу из первого массива (например: 134, 180, 70, ...). Эти ключи повторяются, но поля разные.
Массив, который я хочу создать:

Код: Выделить всё

array(
'134' => array(array(134, 'Field_A_134', 'Field_B_134'), array(134, 'Field_C_134', 'Field_D_134'), array(134, 'Field_E_134', 'Field_F_134')),
'180' => array(array(180, 'Field_A_180', 'Field_B_180'), array(180, 'Field_C_180', 'Field_D_180')),
'70' => array(array(70, 'Field_A_180', 'Field_B_180'))
);
Каждый ключ содержит массив массивов, содержащих первый ключ.
Я пытался сделать это:

Код: Выделить всё

$f = array();
$pr = array();
foreach($data as $p){
if(isset($f[$p[0]])){
array_push($f[$p[0]], $p);
} else {
$f[$p[0]] = $p;
}
array_push($pr, $f);
}
но это не то, чего я хочу.

Подробнее здесь: https://stackoverflow.com/questions/540 ... in-each-gr
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Php»