将2个阵列组合成2d阵列​​而不会丢失数据

时间:2017-09-12 04:54:36

标签: php arrays multidimensional-array

我有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 个答案:

答案 0 :(得分: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

答案 1 :(得分:1)

是的,以上是有效的,我也放弃了这个,但我不知道为什么你结合到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