По какой-то причине я борюсь с этим.
У меня есть 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 )
)
Мне просто нужно использовать эти 2 массива для создания нового массива, который имеет все данные из массива 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 ) )
Любая помощь в этом была бы замечательной.
Благодаря!
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)) );
$finalarr = []; foreach ($query_data as $data) { $arr = []; foreach ($colsArray as $key){ $arr[$key] = $data[$key]; } $finalarr[] = $arr; }
Обозначение []
для создания массивов является новым, поэтому вам может потребоваться использовать array()
.