如何删除多维数组值PHP中不在数组中的值
这是$多维数据结果:如何删除多维数组值PHP中不在数组中的值,php,Php,这是$多维数据结果: [ { "2018-11-02": [ "2" ] }, { "2018-11-02": [ "8", "3" ] } { "2018-11-21": [
[
{
"2018-11-02": [
"2"
]
},
{
"2018-11-02": [
"8",
"3"
]
}
{
"2018-11-21": [
"11",
"35",
"94",
"98",
"163"
]
},
]
$filter=[3,98,11]
如何删除$dimensional
中的对象和值,如果$filter
中不存在值,则在取消设置后,结果将变成如下所示的对象:
{
"3": 2018-11-02,
"98": 2018-11-21,
"11" : 2018-11-21
}
就我而言,我使用的是非序列化:
for($w=0;$w<count($multidimensional);$w++) {
$hasilId2[] = (object) [
$multidimensional[$w]->date=> unserialize($multidimensional[$w]->invoiceid)
];
}
主阵列需要一个循环,内部阵列需要一个循环 因此,最好将两个循环放在彼此内部 也没有必要使用 您可以将正确的结果放入单独的变量中,然后使用它 您希望该数组的键是最终数组值 因此,我使用key函数获取数组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
)
主阵列需要一个循环,内部阵列需要一个循环 因此,最好将两个循环放在彼此内部 也没有必要使用 您可以将正确的结果放入单独的变量中,然后使用它 您希望该数组的键是最终数组值 因此,我使用key函数获取数组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
)
如果一个数字包含在多个日期中,该怎么办?如果数组中不存在筛选器值,该怎么办?此外,请说明您解决该问题的尝试。如果一个数字存在于多个日期,它将创建具有不同数字和相同日期的同一对象。如果筛选器值不存在,它将删除该对象,并且只获取筛选器中可用的id和日期,因此主要目标是将多维值$更改为新变量中的一个键,并填充以$多维形式表示的日期值,就像我希望在我的案例中得到的示例结果一样,我正在使用I unserialize,我已经更新了我的问题,现在我尝试解决它。你可以用一个例子来调整你的问题,显示两种情况下的结果(一个多个,一个不存在)?我需要看看它到底应该是什么样子,因为我不知道“用不同的数字创建同一个对象”是什么意思。如果一个数字包含在多个日期中,会发生什么?如果数组中不存在筛选器值,该怎么办?此外,请说明您解决该问题的尝试。如果一个数字存在于多个日期,它将创建具有不同数字和相同日期的同一对象。如果筛选器值不存在,它将删除该对象,并且只获取筛选器中可用的id和日期,因此主要目标是将多维值$更改为新变量中的一个键,并填充以$多维形式表示的日期值,就像我希望在我的案例中得到的示例结果一样,我正在使用I unserialize,我已经更新了我的问题,现在我尝试解决它。你可以用一个例子来调整你的问题,显示两种情况下的结果(一个多个,一个不存在)?我需要看看它到底应该是什么样子,因为我想我不明白“用不同的数字创建相同的对象”是什么意思。非常感谢你,你的答案真的帮助了我,我从你的答案中得到了一个新的教训。非常感谢,你的回答真的帮助了我,我从你的回答中学到了新的一课。谢谢你