【问题标题】:Make a simple array from a complex array从一个复杂的数组创建一个简单的数组
【发布时间】:2013-03-04 13:44:28
【问题描述】:

我有一个来自数据库的这样的数组($query):

Array
(
[0] => Array
    (
        [category] => Mercedes
    )

[1] => Array
    (
        [category] => BMW
    )

[2] => Array
    (
        [category] => Bentley
    )

)

我想让它成为一个数组 $category:

Array
(
    [0] => Mercedes
    [1] => BMW
    [2] => Bentley
)

我用 array_merge() 尝试了一些东西,但结果看起来不像我想要的。

【问题讨论】:

    标签: php arrays merge


    【解决方案1】:

    您必须遍历您的数组,然后选择每个“类别”值。

    foreach ($query as $array) {
        $newArray[] = $array['category'];
    }
    

    $newArray 将包含您需要的值。

    【讨论】:

      【解决方案2】:

      您想循环访问从数据库返回的数组中的每个数组:

      foreach($query as $row)
      {
          $category[] = $row['category'];
      }
      

      【讨论】:

        【解决方案3】:

        你可以尝试这样的事情,它会递归地展平任意深度的多维数组(来自here):

        function array_flatten($array) { 
            if (!is_array($array)) { 
                return FALSE; 
            }
        
            $result = array(); 
        
            foreach ($array as $key => $value) { 
                if (is_array($value)) { 
                    $result = array_merge($result, array_flatten($value)); 
                } else { 
                    $result[$key] = $value; 
                } 
            } 
        
            return $result; 
        } 
        

        【讨论】:

          【解决方案4】:

          最明显的解决方案:

          $res = array();
          
          foreach ($tab as $val) {
              $res[] = $val['category'];
          }
          

          【讨论】:

            【解决方案5】:
            $new_array = array_map(function($v){return $v['category'];}, $old_array);
            

            【讨论】:

              【解决方案6】:

              我刚刚想出的内联解决方案:

              $new = end(call_user_func_array('array_merge_recursive', $arr));
              

              注意,如果除了category 之外还有一个以上的元素,这将无法正常工作。如果是这样,您可以像这样采用此解决方案:

              $new = call_user_func_array('array_merge_recursive', $arr);
              $new = $new['category'];
              

              但这不是很酷,最好使用通常的foreach 方式。

              【讨论】:

                【解决方案7】:

                问题解决了!!

                    $query = array
                    (
                    array
                        (
                            'category' => 'Mercedes'
                        ),
                
                    array
                        (
                            'category' => 'BMW'
                        ),
                
                    array
                        (
                            'category' => 'Bentley'
                        )
                
                    );
                
                    $category = array();
                
                    foreach( $query as $queryArray ){
                
                        foreach( $queryArray as $key => $value ){
                
                             $category[] = $value;
                
                        }
                
                    }
                
                    //echo '<br />';
                    print_r( $category );
                

                【讨论】:

                  猜你喜欢
                  • 2011-02-05
                  • 1970-01-01
                  • 2018-02-13
                  • 2014-11-16
                  • 1970-01-01
                  • 2012-12-16
                  • 2017-05-06
                  • 2013-08-21
                  • 1970-01-01
                  相关资源
                  最近更新 更多