У меня есть 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). Любой совет будет принят во внимание!
Вы можете сделать это, как показано ниже:
<?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);
Да, вышесказанное работает, и я тоже даю 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);
?>