【问题标题】:Using array_merge_recursive with numeric keys将 array_merge_recursive 与数字键一起使用
【发布时间】:2012-07-03 13:55:11
【问题描述】:

我一直在搜索 SO 并遇到了几个解决方案,这些解决方案都感觉像是绕过数字键上默认的 array_merge_recursive 行为的黑客。例如,我读到您可以在开头添加下划线,将您的数字更改为字符串。

无论如何,这是我的数据集和预期结果...

array ( "Name1", "Name2", "Name3" );
array ( "Data1", "Data2", "Data3" );
array ( "Price1", "Price2", "Price3" );

预期结果:

array ( 1 => array ( "Name1", "Data1", "Price1" ), 2 => array ( "Name2", "Data2", "Price2" ), 3 => array ( "Name3", "Data3", "Price3" );

我确定您知道 array_merge_recursive 通常如何使用数字键操作...这是我当前的合并结果。

array ( "Name1", "Name2", "Name3", "Data1", "Data2", "Data3", "Price1", "Price2", "Price3");

有合适的方法吗?单个方法的优缺点是什么,例如添加下划线来创建字符串键?

【问题讨论】:

    标签: php arrays multidimensional-array array-merge


    【解决方案1】:

    一个简单的解决方法将是一种完全不同的方法,例如:

    $merged = array_map(function () { return func_get_args(); }, $array1, $array2, $array3);
    

    【讨论】:

    • 我喜欢这样。所有其他方法都涉及创建自定义函数和多行代码。这是我一直在寻找的解决方案,并且可以按我希望的那样工作。谢谢!
    【解决方案2】:
    $merge_array = array();
    for($i = 0; $i < count($array1); $i++) {
        $row = array();
        $row[] = $array1[$i];
        $row[] = $array2[$i];
        $row[] = $array3[$i];
        $merged_array[] = $row;
    }
    

    应该可以的。

    【讨论】:

    • 这有点无聊,虽然......而且它也不是递归的。
    猜你喜欢
    • 2012-08-16
    • 2015-02-01
    • 1970-01-01
    • 2011-01-04
    • 1970-01-01
    • 2015-08-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多