php - 如何删除多维数组值PHP中不在数组中的值
问题描述
这是 $multidimensional 数据结果:
[
{
"2018-11-02": [
"2"
]
},
{
"2018-11-02": [
"8",
"3"
]
}
{
"2018-11-21": [
"11",
"35",
"94",
"98",
"163"
]
},
]
$filter = [3,98,11]
如何删除$multidimensional
不存在值的对象和值$filter
以及取消设置后,结果将变成如下对象:
{
"3": 2018-11-02,
"98": 2018-11-21,
"11" : 2018-11-21
}
就我而言,我使用的是 unserialize :
for($w=0;$w<count($multidimensional);$w++) {
$hasilId2[] = (object) [
$multidimensional[$w]->date=> unserialize($multidimensional[$w]->invoiceid)
];
}
我已经尝试过使用循环:
foreach($multidimensional as $key => $value) {
if(!in_array($key, $filter)) {
unset($multidimensional[$key]);
}
}
解决方案
您需要一个用于主数组的循环和一个用于内部数组的循环
所以最好把2个循环放在一起
也没有必要使用
您可以将正确的结果放在单独的变量中,然后使用它
您希望该数组的键成为最终的数组值
所以我使用 key 函数来获取数组键并给出这样的新值:
$result[array value] = [array key];
最后我打印了新数组:
$multidimensional = [
[
"2018-11-02" => [
"2"
]
],
[
"2018-11-02" => [
"8",
"3"
]
],
[
"2018-11-21" => [
"11",
"35",
"94",
"98",
"163"
]
],
];
$filter = [3, 98, 11];
$result = [];
foreach ($multidimensional as $val1) {
foreach (array_values($val1)[0] as $key => $val2) {
if (in_array($val2, $filter)) {
$result[$val2] = key($val1);
}
}
}
print_r($result);
结果:
Array
(
[3] => 2018-11-02
[11] => 2018-11-21
[98] => 2018-11-21
)