0

私は何らかの理由でこれに苦労しています。

私は2つの配列を持っています。1 つ目は、次のような colsArray という標準配列です。

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

2 つ目は、次のような 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
    )

)

これら 2 つの配列を使用して、キーが最初の配列 colsArray にある query_data 配列のすべてのデータを含む新しい配列を作成する必要があります。新しい配列は次のようになります。

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 に答える