我有一个像下面这样的多维数组。
array:1 [
0 => array:3 [
"picture_id" => "0"
"car_name" => "CA"
"from" => "2020"
"to" => "2020"
]
]
我需要从上述数组中删除from
和to
,并以相同的结构返回结果。
我尝试了以下代码
$whitelist = array("from", "to");
$finalArray = [];
foreach ($records as $record) {
foreach ($record as $key => $item) {
if (!in_array($key, $whitelist)) {
$finalArray[$key] = $item;
}
}
}
但是我得到的结果不是这样的多维数组:
array:1 [
"picture_id" => "0"
"car_name" => "CA"
]
我的预期结果是:
array:1 [
0 => array:3 [
"picture_id" => "0"
"car_name" => "CA"
]
]
您可以尝试这样的事情:
$array = [
[
"picture_id" => "0",
"car_name" => "CA",
"from" => "2018",
"to" => "2020"
],
[
"picture_id" => "1",
"car_name" => "WA",
"from" => "2010",
"to" => "2019"
]
];
$whitelist = array("from", "to");
$finalArray = [];
foreach ($array as $k => $record) {
foreach ($record as $key => $item) {
if (!in_array($key, $whitelist)) {
$finalArray[$k][$key] = $item;
}
}
}
print("<pre>".print_r($finalArray,true)."</pre>");
将打印出什么:
Array
(
[0] => Array
(
[picture_id] => 0
[car_name] => CA
)
[1] => Array
(
[picture_id] => 1
[car_name] => WA
)
)
您不必使用每个字段来确定是否应删除它,而可以使用array_diff_key()
一次删除所有列。这需要您创建要删除的字段的列表,对于每个记录,只需获取记录和要删除的键之间的区别即可。
array_diff_key()