从复杂的数组中创建一个简单的数组

时间:2013-03-04 13:44:29

标签: php arrays merge

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

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

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

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

)

我想把它变成一个数组$ category:

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

我尝试使用array_merge(),但结果看起来不像我想要的那样。

7 个答案:

答案 0 :(得分:2)

你必须迭代你的数组,选择每个'类别'值。

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

$newArray将根据您的需要包含值。

答案 1 :(得分:1)

你可以试试这样的东西,它会以递归的方式展平任意深度的多维数组(来自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; 
} 

答案 2 :(得分:1)

您希望遍历从数据库返回的数组中的每个数组:

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

答案 3 :(得分:0)

最明显的解决方案:

$res = array();

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

答案 4 :(得分:0)

$new_array = array_map(function($v){return $v['category'];}, $old_array);

答案 5 :(得分:0)

内联解决方案我刚刚提出:

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

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

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

但这并不是那么酷,而且通常采用foreach方式更好。

答案 6 :(得分:0)

问题解决!!。

    $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 );