有一个关联数组:
Array
(
[tableData] => Array
(
[0] => Array
(
[booking_name] => abc/xyz/123
[user_area] => ls reca
[release] => oss72
[start_date] => 2017-06-20 00:00:00
[end_date] => 2017-06-23 00:00:00
[asset_info] => Array
(
[0] => Array
(
[status] => 10
[manufacturer] => HP
[model] => HP BL460C GEN8
[hardware_color] => #0066b3
)
)
[full_name] => Valay Desai
[email_address] => valay@xyz.com
)
............,
[500] => Array()
)
)
我已使用array_map
从另一个对象$filtered_array)
获取属性名称。
$filteredColumns = array_map(function($item){
return $item['attribute'];
}, $filtered_array);
从这里我得到了以下输出:
Array
(
[0] => booking_name
[5] => asset_info
[6] => full_name
[7] => start_date
)
此处按键不正常。 asset_info
是另一个关联数组。
$filteredData = [];
foreach ($tableData as $key => $row) {
$filteredData[$key] = array_filter($filteredColumns, function($item) use ($row){
$intersect = array_intersect_assoc((array)$item, (array)$row);
return (count($intersect)) === count($row);
});
}
但输出空白数组。
如何使用array_map
获得的密钥名称返回主要的大关联数组?如何使用仅与某些键匹配的项目返回主阵列(500项)?
答案 0 :(得分:1)
我真的不需要使用array_filter。如果你翻转$ filteredColumns(所以列名是数组键),你只需使用array_intersect_key()来获取所需的键。
$filteredColumns = array_flip($filteredColumns);
foreach ($tableData as $key => $row) {
$filteredData[$key] = array_intersect_key($row, $filteredColumns);
}
根据$ filtered_array的外观,您可以使用http://at2.php.net/manual/en/function.array-column.php而不是array_map