组合多维数组(一键与其他值)

时间:2013-12-26 23:27:56

标签: php arrays multidimensional-array

玩了几个小时,但是不能这样做。任务看起来很简单,但是..我需要递归地将2个数组合并为一个。使用第一个数组的值作为键,第二个数组的值保持不变。这就是我所拥有的:

array(2) {
  [0]=>
  array(4) {
    [0]=>
    string(9) "First"
    [1]=>
    string(6) "Something"
  }
  [1]=>
  array(4) {
    [0]=>
    string(3) "More"
    [1]=>
    string(6) "Nomore"
  }
}

第二个数组

array(2) {
  [0]=>
  array(4) {
    [0]=>
    string(1) "1"
    [1]=>
    string(1) "2"
  }
  [1]=>
  array(4) {
    [0]=>
    string(1) "1"
    [1]=>
    string(1) "2"
  }
}

我想要实现的目标:

array(2) {
  [0]=>
  array(4) {
    ["First"]=>
    string(1) "1"
    ["Something"]=>
    string(1) "2"
  }
  [1]=>
  array(4) {
    ["More"]=>
    string(1) "1"
    ["Nomore"]=>
    string(1) "2"
  }
}

3 个答案:

答案 0 :(得分:1)

$firstArray = array(
  array('first', 'second', 'third'),
  array('more1', 'more2', 'more3'),
);

$secondArray = array(
  array('val1', 'val2', 'val3'),
  array('2val1', '2val2', '2val3')
);

$newArray = array();
for ($i=0; $i<count($firstArray); ++$i) {
  $subArray1 = $firstArray[$i];
  $subArray2 = $secondArray[$i];
  $newArray[$i] = array();
  for ($j=0; $j<count($subArray1); ++$j) {
    $key = $subArray1[$j];
    $value = $subArray2[$j];
    $newArray[$i][$key] = $value;
  }
}

var_dump($newArray);

答案 1 :(得分:1)

使用array_combine

的另一种解决方案
$first_array = array(
  array('first', 'second', 'third'),
  array('more1', 'more2', 'more3'),
);

$second_array = array(
  array('val1', 'val2', 'val3'),
  array('2val1', '2val2', '2val3')
);

$new_array = array();
foreach($first_array AS $k => $v) {
  $new_array[$k] = array_combine($v,$second_array[$k]);
}

答案 2 :(得分:1)

做这样的事情会不会更优雅?

$newArray = array();
foreach ($firstArray as $key => $firstVal)
    foreach ($secondArray as $key => $secondVal)
        array_push($newArray, array_combine($firstVal, $secondVal));

通过这种方式,您可以在$newArray内获得相同的结果 用更简单的代码。

我没有测试过,但请告诉我它是否有效:)