PHP,将两个数组合并为一个新数组

时间:2013-06-25 10:53:08

标签: php

我想要组合两个数组。我需要通过组合它们来从两个数组中获取值。

我的第一个阵列是:

Array
(
    [0] => Array
        (
            [1] => a
            [2] => 1a
        )

    [1] => Array
        (
            [1] => b
            [2] => 2b
        )
)

这是我的第二个阵列:

Array
(
   [0] => Array
        (
            [1] => Aye Aye
            [2] => 18
            [3] => Female
            [4] => Yangon
            [5] => a
        )
  [1] => Array
      (
          [1] => Mg Mg
          [2] => 20
          [3] => Male
          [4] => Mandalay
          [5] => b
      )
)

我想这样结合:

Array(
  [0] => Array
        (
            [1] => a
            [2] => 1a
        [3] => Aye Aye
            [4] => 18
            [5] => Female
            [6] => Yangon
            [7] => a
       )
 [1] => Array
      (
            [1] => b
            [2] => 2b
        [3] => Mg Mg
            [4] => 20
            [5] => Male
            [6] => Mandalay
            [7] => b
      )
)

我希望像第一个数组[0]和第二个数组[0]以及第一个数组[1]和第二个数组[1]那样组合。 第一个数组[0] [1]和第二个数组[0] [5]总是相同的,然后第一个数组[1] [1]和第二个数组[1] [5]也相同。 请...

2 个答案:

答案 0 :(得分:1)

听起来像你正在寻找array_mergearray_merge_recursive

也许更合适的是:

$result = array();
for($i=0, $j= count($arr1);$i<$j;$i++)
{//standard loop over array
    $result[$i] = array_merge($arr1[$i], $arr2[$i]);
}

那应该给你你需要的东西。但是,请查看各种array_*函数,其中总共有79个函数,可能存在一个,或者更确切地说是核心,满足您的需求。

我最接近你想要的结果,而不是愚蠢是这样的:

$result = array();
for($i=0, $j= count($arr1);$i<$j;$i++)
{//standard loop over array
    unset($arr2[$i][3]);
    $arr2[$i] = array_filter($arr2[$i], 'is_string');//gets rid of all the numbers
    $result[$i] = array_unique(array_merge($arr1[$i], $arr2[$i]));
}

输出:

array(2) {
  [0]=>
  array(4) {
    [0]=>
    string(1) "a"
    [1]=>
    string(2) "1a"
    [2]=>
    string(7) "Aye Aye"
    [3]=>
    string(6) "Female"
  }
  [1]=>
  array(4) {
    [0]=>
    string(1) "b"
    [1]=>
    string(2) "2b"
    [2]=>
    string(5) "Mg Mg"
    [3]=>
    string(4) "Male"
  }
}

答案 1 :(得分:0)

来自PHPDocs

<?php
$ar1 = array("color" => array("favorite" => "red"), 5);
$ar2 = array(10, "color" => array("favorite" => "green", "blue"));
$result = array_merge_recursive($ar1, $ar2);
print_r($result);
?>

(或)

<?php
$array1 = array("color" => "red", 2, 4);
$array2 = array("a", "b", "color" => "green", "shape" => "trapezoid", 4);
$result = array_merge($array1, $array2);
print_r($result);
?>