【问题标题】:How can I merge array's items?如何合并数组的项目?
【发布时间】:2017-07-05 09:41:29
【问题描述】:

我有一个这样的数组:

$arr = array ( [0] => array("red","green"),
               [1] => array("blue","yellow")
             );

这是预期的结果:

Array ( [0] => red [1] => green [2] => blue [3] => yellow )

看到了吗?我想合并$arr 的所有项目(它们本身也是数组)。我该怎么做?

我可以对其进行循环,然后每次都使用array_merge()

$res = [];
foreach ( $arr as $item ) {
    $res = array_merge($res, $item);
}

It works as well。但我想我可以写得更好。任何想法?

【问题讨论】:

  • Post 可能最适合代码审查。绝对不是这样
  • @DarylGill 也不适合代码审查。在提出此类建议之前,请查看他们的help centre

标签: php arrays function


【解决方案1】:

你可以用 call_user_func_array 来耍花招:

$result = call_user_func_array('array_merge', $arr);

这个技巧是可能的,因为array_merge 接受动态参数计数。

【讨论】:

    【解决方案2】:

    这是一个风格练习,但如果结构与您的示例相同,您可以玩这个:

    $arr = array ( '0' => array("red","green"),
                   '1' => array("blue","yellow")
                 );
    
    $res = explode(",",str_replace(array('[',']'),'',json_encode($arr)));
    

    希望这会有所帮助。

    【讨论】:

      【解决方案3】:

      你以错误的方式声明数组:

      $arr = array ( 0 => array("red","green"),
                     1 => array("blue","yellow")
                   );
      

      PHP报的错误说的很清楚:

      Fatal error: Illegal offset type in /in/Hhfqa on line 3
      

      您的示例中的第 3 行正好是第一个数组元素的行。

      请查看http://php.net/manual/en/language.types.array.php

      【讨论】:

        猜你喜欢
        • 2019-07-15
        • 2022-01-21
        • 1970-01-01
        • 2017-11-13
        • 1970-01-01
        • 2021-12-16
        • 2021-03-07
        • 1970-01-01
        • 2018-10-15
        相关资源
        最近更新 更多