0

出于某种原因,我正在为此苦苦挣扎。

我有 2 个数组。第一个是一个名为 colsArray 的标准数组,如下所示:

Array
(
    [0] => fName
    [1] => lName
    [2] => city
)

第二个是一个名为 query_data 的多维数组,如下所示:

Array
(
    [0] => Array
    (
        [recordID] => xxx
        [fName] => xxx
        [lName] => xxx
        [address1] => xxx
        [city] => xx
        [zip] => xxx
        [vin] => xxx
    )

[1] => Array
    (
        [recordID] => xxx
        [fName] => xxx
        [lName] => xxx
        [address1] => xxx
        [city] => xxx
        [zip] => xxx
        [vin] => xxx
    )

[2] => Array
    (
        [recordID] => xxx
        [fName] => xxx
        [lName] => xxx
        [address1] => xxx
        [city] => xxx
        [zip] => xxx
        [vin] => xxx
    )

[3] => Array
    (
        [recordID] => xxx
        [fName] => xxx
        [lName] => xxx
        [address1] => xxx
        [city] => xxx
        [zip] => xxx
        [vin] => xxx
    )

)

我只需要使用这两个数组来创建一个新数组,其中包含来自 query_data 数组的所有数据,其中键位于第一个数组 colsArray 中。新数组如下所示:

Array
(
    [0] => Array
    (

        [fName] => xxx
        [lName] => xxx
        [city] => xx

    )

[1] => Array
    (
        [fName] => xxx
        [lName] => xxx
        [city] => xx
    )

[2] => Array
    (
        [fName] => xxx
        [lName] => xxx
        [city] => xx
    )

[3] => Array
    (
        [fName] => xxx
        [lName] => xxx
        [city] => xx
    )
)

对此的任何帮助都会很棒。

谢谢!

4

2 回答 2

8

PHP 提供了多种数组函数,您通常只需将其中的一些组合起来即可:

$keys = array_flip($colsArray);
$new_data = array();

foreach($query_data as $key => $data) {
    $new_data[$key] = array_intersect_key($data, $keys);
}

或者,更实用的风格,但更多的内存密集型:

$new_data = array_map(
    'array_intersect_key', // or just array_intersect_key in newer PHP versions 
    $query_data, 
    array_pad(array(), count($query_data), array_flip($colsArray))
);
于 2012-12-16T18:17:11.043 回答
1
$finalarr = [];
foreach ($query_data as $data) {
    $arr = [];
    foreach ($colsArray as $key){
       $arr[$key] = $data[$key];
    }
    $finalarr[] = $arr;
}

创建数组的[]符号是新的,因此您可能不得不使用它array()

于 2012-12-16T18:17:30.857 回答