Объединить 2 массива в 2d массив без потери данных

У меня есть 2 массива и хочу объединить в третий массив с одним массивом в качестве ключа и другим в качестве значения. Я пытался использовать array_combine (), но функция удалит все повторяющиеся ключи, поэтому я хочу, чтобы массив результатов был как 2D-массив. Пример массива приведен ниже:

$keys = {0,1,2,0,1,2,0,1,2};
$values = {a,b,c,d,e,f,g,h,i};
$result = array(
[0]=>array(0=>a,1=>b,2=>c),
[1]=>array(0=>d,1=>e,2=>f),
[2]=>array(0=>g,1=>h,2=>i)
);
//What i am using right now is:
$result = array_combine($keys,$values);

Но он возвращает только массив (0 => g, 2 => h, 3 => i). Любой совет будет принят во внимание!

2

Решение

Вы можете сделать это, как показано ниже:

<?php

$keys = array(0,1,2,0,1,2,0,1,2);
$values = array('a','b','c','d','e','f','g','h','i');

$values = array_chunk($values,count(array_unique($keys)));

foreach($values as &$value){
$value = array_combine(array_unique($keys),$value);
}

print_r($values);

https://eval.in/859753

2

Другие решения

Да, вышесказанное работает, и я тоже даю upvote для этого, но я не знаю, почему вы объединяете в цикле foreach его не нужно. Результаты приведены только во второй строке. Можешь описать?

<?php
$keys = array(0,1,2,0,1,2,0,1,2);
$values = array('a','b','c','d','e','f','g','h','i');
$v = array_chunk($values,count(array_unique($keys)));
echo "<pre>";print_r($v);
?>

https://eval.in/859759

1

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector