Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/232.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何删除多维数组值PHP中不在数组中的值_Php - Fatal编程技术网

如何删除多维数组值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,我已经更新了我的问题,现在我尝试解决它。你可以用一个例子来调整你的问题,显示两种情况下的结果(一个多个,一个不存在)?我需要看看它到底应该是什么样子,因为我想我不明白“用不同的数字创建相同的对象”是什么意思。非常感谢你,你的答案真的帮助了我,我从你的答案中得到了一个新的教训。非常感谢,你的回答真的帮助了我,我从你的回答中学到了新的一课。谢谢你