如何从多维数组中删除多列?

问题描述 投票:0回答:2

我有一个像下面这样的多维数组。

array:1 [
  0 => array:3 [
    "picture_id" => "0"
    "car_name" => "CA"
    "from" => "2020"
    "to" => "2020"
  ]
]

我需要从上述数组中删除fromto,并以相同的结构返回结果。

我尝试了以下代码

    $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"
  ]
]
php arrays
2个回答
4
投票

您可以尝试这样的事情:

$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
        )

)

0
投票

您不必使用每个字段来确定是否应删除它,而可以使用array_diff_key()一次删除所有列。这需要您创建要删除的字段的列表,对于每个记录,只需获取记录和要删除的键之间的区别即可。

array_diff_key()
© www.soinside.com 2019 - 2024. All rights reserved.