【问题标题】:create new array merge创建新的数组合并
【发布时间】:2015-10-03 05:42:17
【问题描述】:

我有一个数组:

array(
     [0] => Array
        (
              [d1] => Array
              (
              ................ 
              )
              [d2] => Array
              (
              ................
              )
        )
    [1] => Array
        (
              [d1] => Array
              (
              ................ 
              )
              [d2] => Array
              (
              ................
              )
        )
)

如何新建一个数组来合并它,所以只有d1和d2,去掉索引0和1。

【问题讨论】:

  • 到目前为止你尝试了什么??
  • 不清楚你想做什么
  • 我想将新数组作为数组([d1] => 数组(......)[d2] => 数组(... ...... ) ) )
  • 但是最后一个会覆盖你所有的数组值stackoverflow.com/questions/30636179/…
  • 检查this我的意思

标签: php arrays


【解决方案1】:

对于 PHP > 5.5.0 你可以简单地使用array_column 就像

$result['d1'] = call_user_func_array('array_merge',array_column($your_array,'d1'));
$result['d2'] = call_user_func_array('array_merge',array_column($your_array,'d2'));
print_r($result);

Demo

【讨论】:

    【解决方案2】:

    假设您的数组名称是$a,那么我们可以:

    $result = [];
    $result['d1'] = [];
    $result['d2'] = [];
    foreach ($a as $v) {
        $result['d1'] = array_merge($result['d1'], $v['d1'])
        $result['d2'] = array_merge($result['d2'], $v['d2'])
    }
    

    现在您在$result 中拥有您想要的。

    【讨论】:

      【解决方案3】:

      这是您的解决方案visit here

      假设您的数组 $menus 和过滤后的新数组将是 $filteredMenu 。你的最终结果$filteredMenu

      <?php 
      $menus = array(
              0 =>array(
                  "d1" => array (
                      "id"=> "----",
                          ),
                  "d2" => array (
                      "id"=> "----",
                          )
                  ),
               1 =>array(
                   "d1" => array (
                      "id"=> "----",
                          ),
                  "d2" => array (
                      "id"=> "----",
                          )
                  )
                 );
      
        $filteredMenu = [];
        $filteredMenu['d1'] = [];
        $filteredMenu['d2'] = [];
        foreach ($menus as $item) {
          $filteredMenu['d1'] = array_merge($filteredMenu['d1'], $item['d1']);
          $filteredMenu['d2'] = array_merge($filteredMenu['d2'], $item['d2']);
        }
      
       print_r($filteredMenu);
      ?>
      

      【讨论】:

        猜你喜欢
        • 2021-12-13
        • 2012-09-11
        • 1970-01-01
        • 1970-01-01
        • 2018-08-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多