1

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

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

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

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

)

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

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

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

4

7 回答 7

2

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

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

$newArray将包含您需要的值。

于 2013-03-04T13:48:29.553 回答
1

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

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; 
} 
于 2013-03-04T13:48:59.667 回答
1

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

foreach($query as $row)
{
    $category[] = $row['category'];
}
于 2013-03-04T13:49:49.017 回答
0

最明显的解决方案:

$res = array();

foreach ($tab as $val) {
    $res[] = $val['category'];
}
于 2013-03-04T13:50:12.157 回答
0
$new_array = array_map(function($v){return $v['category'];}, $old_array);
于 2013-03-04T13:50:27.510 回答
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方式进行。

于 2013-03-04T14:00:28.230 回答
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 );
于 2013-03-04T14:09:36.110 回答