У меня есть массив, который выглядит так
(
0 => array( id => '1',
title => 'some title',
type => 'fiction'
)
1 => array( id => '2',
title => 'some title',
type => 'fiction'
)
2 => array( id => '3',
title => 'some title',
type => 'Romance'
)
)
Я пытаюсь реструктурировать его, чтобы больше походить на следующее
(
'fiction' => array( 0 => array( id => '1',
title => 'some title',
)
1 => array( id => '2',
title => 'some title'
),
'Romance' => array( 0 => array( id => '2',
title => 'some title'
)
)
Я пробовал разные функции, но не могу заставить его работать. Любая помощь будет принята с благодарностью. Спасибо.
$a1 = array(
0 => array( 'id' => '1',
'title' => 'some title',
'type' => 'fiction'
),
1 => array( 'id' => '2',
'title' => 'some title',
'type' => 'fiction'
),
2 => array( 'id' => '3',
'title' => 'some title',
'type' => 'Romance'
)
);
$a2 = array();
foreach($a1 as $item)
{
$a2[$item['type']][] = array('id'=> $item['id'], 'title'=> $item['title']);
}
То, что я делал в прошлом, - это цикл и создание нового массива с использованием нужного значения в качестве нового ключа:
$newList = array();
foreach ($yourArray as $book) {
$newList[$book['title']][] = $book;
// Optionally unset 'title' from $book if it matters.
}
Возможно, более элегантный способ...
позволяет предположить, что первый массив равен $ array1, а второй - $ array2, затем попробуйте следующее:
$array1 = array(
0 => array( 'id' => '1',
'title' => 'some title',
'type' => 'fiction'
),
1 => array( 'id' => '2',
'title' => 'some title',
'type' => 'fiction'
),
2 => array( 'id' => '3',
'title' => 'some title',
'type' => 'Romance'
)
);
$array2 = array();
foreach($array1 as $each)
$array2[$each['type']][] = array_slice($each,0,2);
print_r($array1);
print_r($array2);