【问题标题】:Array within array as single associative array数组中的数组作为单个关联数组
【发布时间】:2016-08-19 12:18:08
【问题描述】:

我在数组值中有一个数组,如下所示。

Array
(
    [0] => Array
        (
            [0] => Array
                (
                    [Floor] => Floor-1
                )

            [1] => Array
                (
                    [Flat] => Flat A2
                )

            [2] => Array
                (
                    [Area] => Balcony,
                )

        )
)

我需要将其设置为如下的单个关联数组。

Array
(
    [0] => Array
        (
             [Floor] => Floor-1
             [Flat] => Flat A2
             [Area] => Balcony,
        )
)

我该怎么做?

【问题讨论】:

  • 很好。那么你做了什么来尝试实现这一目标?第一个数组 always 里面是否只有一个数组?键是否在内部数组中重复?
  • 我以后无法访问数组值中的数组。如果我得到所需值的输出,我可以更容易地获取它。

标签: php arrays


【解决方案1】:

这个例子应该对你有所帮助。

<?php


$arr = array(
    array(
        'floor'=>'Floor-1'
        ),
    array(
        'Flat'=>'Flat A2'
        ),
    array(
        'Area'=>'Balcony,'
        ),
    );



$final_array = array();
foreach ($arr as $arr1) {

    foreach ($arr1 as $key => $value) {
        $final_array[$key] = $value;
    }

}


?>

输出将是

 Array
    (
        [floor] => Floor-1
        [Flat] => Flat A2
        [Area] => Balcony,
    )

这里我们创建了一个名为$final_array 的空数组,我们将使用foreach 循环附加这个数组。

请记住,如果您有相同的数组键,那么最后一个值将被覆盖,如下所示。

<?php
$arr = array(
    array(
        'floor'=>'Floor-1',
        'floor'=>'Floor-2',
        ),
    array(
        'Flat'=>'Flat A2'
        ),
    array(
        'Area'=>'Balcony,'
        ),

     array(
        'Area'=>'Balcony2,'
        ),
    );



$final_array = array();
foreach ($arr as $arr1) {

    foreach ($arr1 as $key => $value) {
        $final_array[$key] = $value;
    }

}


?>

现在,输出将是

Array
(
    [floor] => Floor-2
    [Flat] => Flat A2
    [Area] => Balcony2,
)

【讨论】:

    【解决方案2】:
    <?php
    
    $array = [
        [
            [
                'foo' => 'big'
            ],
            [
                'bar' => 'fat'
            ],
            [
                'baz' => 'mamma'
            ]
        ]
    ];
    
    $merged[0] = array_reduce($array[0], function($carry, $item) {
        return array_merge((array) $carry, $item);
    });
    
    var_export($merged);
    

    输出:

    array (
      0 => 
      array (
        'foo' => 'big',
        'bar' => 'fat',
        'baz' => 'mamma',
      ),
    )
    

    【讨论】:

      【解决方案3】:

      这一行代码就足够了

      $newArr = call_user_func_array('array_merge',$dataArr); ///where $dataArr is your array..
      

      call_user_func_array 将调用带有参数数组的回调函数,并且 array_merge 会将所有这些参数合并到单个数组中阅读更多关于 call_user_func_array()array_merge() 的信息

      示例代码:

      <?php 
      $dataArr = array(
                      array(
                          'Floor'=>'Floor-1'
                          ),
                      array(
                          'Flat'=>'Flat A2'
                          ),
                      array(
                          'Area'=>'Balcony,'
                          ),
                  );
      $newArr = call_user_func_array('array_merge',$dataArr);
      echo "<pre>"; print_r($newArr);
      ?>
      

      这会给你:

      Array
      (
          [Floor] => Floor-1
          [Flat] => Flat A2
          [Area] => Balcony,
      )
      

      【讨论】:

        猜你喜欢
        • 2016-07-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-01-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-09-28
        相关资源
        最近更新 更多