【问题标题】:Merge two arrays (key and content) in PHP在 PHP 中合并两个数组(键和内容)
【发布时间】:2010-10-14 22:57:45
【问题描述】:

我有一个像下面这样的数组

数组 ([0] => "txt1" [1] => "txt2" [2] => "txt3")

我有另一个类似的数组,但内容不同: 数组([0] => on [2] => on)

目的是得到一个包含第二个键和第一个内容的最终数组,就像合并它们一样。

所以最后的结果是:Array([0] => "txt1" [2] => "txt3") 最好把key改成0-1,不过那是个小问题,重点来将它们一对一合并。

【问题讨论】:

    标签: php arrays merge key


    【解决方案1】:

    最简单的方法是使用array_intersect_key (See the PHP Docs)。它从传递的第一个数组中获取与传递的所有其他数组中存在的键相对应的值。

    因此,您的示例将如下所示:

    $a = array(0 => "txt1", 1 => "txt2", 2 => "txt3");
    $b = array(0 => 1, 2 => 1);
    $c = array_intersect_key($a, $b);
    print_r($c);
    

    打印:

    Array
    (
        [0] => txt1
        [2] => txt3
    )
    

    【讨论】:

    • 使用 array_values() 重新索引结果数组
    【解决方案2】:

    array_combine - 使用一个数组作为键,另一个作为值来创建一个数组

    【讨论】:

    • 输入数组的大小应该相等
    【解决方案3】:

    你为什么不使用直接的解决方案?

    foreach($arr2 as $k=>$v) {
        $a[$k] = $arr1[$k];
    }
    

    【讨论】:

    • 我倾向于实现这样的手动解决方案,它们运行良好,但您应该始终假设任何本机功能会更快,并且将来可能会变得更加优化,同时您的 foreach 将始终保持相同的速度.
    • 我认为如果由于某种原因无法访问文档,那么直接实施是可行的。内置函数当然可以提供更好的性能,但如果您知道内置函数的存在,您可以获得某种收益。
    猜你喜欢
    • 1970-01-01
    • 2014-05-08
    • 1970-01-01
    • 1970-01-01
    • 2010-09-14
    • 2011-02-22
    • 1970-01-01
    相关资源
    最近更新 更多