按值从PHP数组中删除PHP数组

按值从PHP数组中删除PHP数组,php,arrays,multidimensional-array,Php,Arrays,Multidimensional Array,我想删除由特定值选择的数组中的整个数组。 这是我到目前为止得到的密码 因为我用所有的子阵列来扰乱阵列,然后重新插入子阵列,所以(我认为)使用更大或更多的阵列可能会导致巨大的性能问题 那么,我的问题是,有没有办法优化下面的代码,还是只删除一个数组,而保留其余数组? 谢谢:) 在许多情况下,您的代码都会返回错误的结果,例如,当根本找不到搜索的值时,或者在最后一个子数组中。这是因为以下几行: unset($valueArray); 及 第一条语句破坏了之前使用第二条语句生成的任何结果。或者,如果第一

我想删除由特定值选择的数组中的整个数组。 这是我到目前为止得到的密码

因为我用所有的子阵列来扰乱阵列,然后重新插入子阵列,所以(我认为)使用更大或更多的阵列可能会导致巨大的性能问题

那么,我的问题是,有没有办法优化下面的代码,还是只删除一个数组,而保留其余数组?

谢谢:)


在许多情况下,您的代码都会返回错误的结果,例如,当根本找不到搜索的值时,或者在最后一个子数组中。这是因为以下几行:

unset($valueArray);

第一条语句破坏了之前使用第二条语句生成的任何结果。或者,如果第一个数组从未执行,第二个数组只会添加到原始数组中,使其大小增加一倍

相反,您可以使用:

看它继续跑

正如@shubder在评论中指出的,奇怪的是,您想要搜索所有键中的值。从您给出的示例来看,您似乎希望在
valueID
键下找到它

在这种情况下,您可以优化代码并执行以下操作:

$valueArray = array_filter($valueArray, function ($value) use ($currentValue) {
    return $value['valueID'] !== $currentValue;
});

查看是否继续运行。

您可能需要签出codereview.stackexchange.com您使用的是
数组\u search()
,因为您不知道
$currentValue
可能在搜索的数组中的何处?如果它总是在
valueID
键下,那么如果($value['valueID']==$currentValue){…}或
返回$value['valueID']==$currentValue,则检查这个具体键的速度要快得多如果是trincot的answer@shudder,确实如此,但在我的代码中,它实际上是
==
.Yep查看键而不是整个数组是有意义的,谢谢:)@Antari24,只是让您知道:没有必要在标题中添加
已解决的
,因为StackOverflow已经表明了这一点。此外,您不应该在问题中添加答案。答案是独立的帖子,网站就是这样运作的。在你的问题中看到答案代码实际上会让人困惑。我将问题回滚到其原始版本。尚未使用array_filter,但将尝试使用它。好的,还要注意来自shudder的评论,以及我刚才添加的段落。array_filter工作起来很有魅力!谢谢你指出这一点。
$valueArray[] = $value;
$valueArray = array_filter($valueArray, function ($value) use ($currentValue) {
    return array_search($currentValue, $value) === false;
});
$valueArray = array_filter($valueArray, function ($value) use ($currentValue) {
    return $value['valueID'] !== $currentValue;
});