【问题标题】:php merge 2 arrays into one associative arrayphp将2个数组合并为一个关联数组
【发布时间】:2013-06-19 20:45:15
【问题描述】:

使用 PHP 我需要将 2 个数组(长度相等的数组合并为一个关联数组)这是我当前数据集的摘录:

[1] => Array
    (
        [0] => C28
        [1] => C29
    )

[2] => Array
    (
        [0] => 1AB010050093
        [1] => 1AB008140029
    )

两个元素 [1] 和 [2] 实际上比两个子元素长很多(就像我说的,这是摘录)。

交易是第一个数组中的“C28”对应第二个数组中的“1AB010050093”,依此类推...我需要的结果是创建一个新的关联数组,如下所示:

[1] => Array    
    (
        ['ref']  => C28
        ['part'] => 1AB010050093
    )
[2] => Array
    (
        ['ref'] => C29
        ['part'] => 1AB008140029
    )

等等……

【问题讨论】:

  • 您需要将它们组合成一个多维数组,还是希望结果是2个单独的一维数组?
  • 你尝试了什么?这可以在大约 4 行代码中完成。

标签: php arrays merge associative-array array-merge


【解决方案1】:

如果你愿意妥协于这样的数组结构:

array(
    'C28' => '1AB010050093',
    'C29' => '1AB008140029'
);

然后你可以使用array_combine()Codepad Demo):

array_combine($refNumbers, $partIds);

否则,您需要使用 foreach (Codepad Demo):

$combined = array();

foreach($refNumbers as $index => $refNumber) {
    if(!array_key_exists($index, $partIds)) {
        throw OutOfBoundsException();
    }

    $combined[] = array(
        'ref'  => $refNumber,
        'part' => $partIds[$index]
    );
}

【讨论】:

  • 我想我可能可以使用第一个数组结构并使用组合,谢谢
  • @sadmicrowave 虽然从长远来看可能无关紧要,但array_combine() 也会稍微快一些,因为它是内部的。
【解决方案2】:

如果您使用的是 PHP 5.5+,则有一个名为 array_column() 的新方法,它将获取特定列中的所有值。这可能会被使用,尽管我认为一个简单的 foreach 循环可能仍然是你最好的选择。

【讨论】:

    【解决方案3】:

    怎么样:

    $arr1 = array(
        0 => 'C28',
        1 => 'C29',
    );
    
    $arr2 = array(
        0 => '1AB010050093',
        1 => '1AB008140029',
    );
    $result = array();
    for ($i=0; $i<count($arr1); $i++) {
        $result[] = array('ref' => $arr1[$i], 'part' => $arr2[$i]);
    }
    print_r($result);
    

    输出:

    [1] => Array
        (
            [0] => C28
            [1] => C29
        )
    
    [2] => Array
        (
            [0] => 1AB010050093
            [1] => 1AB008140029
        )
    

    【讨论】:

      猜你喜欢
      • 2012-10-21
      • 1970-01-01
      • 1970-01-01
      • 2018-04-27
      • 2012-11-01
      • 1970-01-01
      • 2020-06-22
      • 2010-11-15
      • 2011-04-15
      相关资源
      最近更新 更多