如何使用 PHP 数组函数查找数组中的值并删除它?
如何查找数组中是否存在某个值然后将其删除?删除后我需要顺序索引顺序。
有 PHP 内置数组函数可以做到这一点吗?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
如何查找数组中是否存在某个值然后将其删除?删除后我需要顺序索引顺序。
有 PHP 内置数组函数可以做到这一点吗?
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(11)
要搜索数组中的元素,可以使用
array_search
函数,要从数组中删除元素,可以使用unset
函数。例如:您可以参考: https://www.php.net/manual/en /ref.array.php 了解更多与数组相关的函数。
To search an element in an array, you can use
array_search
function and to remove an element from an array you can useunset
function. Ex:You can refer: https://www.php.net/manual/en/ref.array.php for more array related functions.
您需要首先找到数组的键,这可以使用 array_search 来完成()
完成后,使用 unset()
You need to find the key of the array first, this can be done using array_search()
Once done, use the unset()
以防万一您想使用任何提到的代码,请注意,当在“haystack”中找不到“needle”时,
array_search
返回 FALSE,因此这些示例将取消设置第一个(零索引)物品。使用这个来代替:上面的例子将输出:
And that's good!
Just in case you want to use any of mentioned codes, be aware that
array_search
returns FALSE when the "needle" is not found in "haystack" and therefore these samples would unset the first (zero-indexed) item. Use this instead:The above example will output:
And that's good!
您可以使用
array_filter
来根据回调函数过滤掉数组的元素。回调函数将数组的每个元素作为参数,如果应该删除该元素,您只需返回 false 即可。由于它会扫描整个数组,因此还具有删除重复值的优点。你可以这样使用它:
如果你想重新索引数组,你可以将结果传递给
array_values
像这样:You can use
array_filter
to filter out elements of an array based on a callback function. The callback function takes each element of the array as an argument and you simply returnfalse
if that element should be removed. This also has the benefit of removing duplicate values since it scans the entire array.You can use it like this:
And if you want to re-index the array, you can pass the result to
array_values
like this:该解决方案是@Peter 用于删除多个出现的解决方案和@chyno 用于删除第一个出现的解决方案的组合。这就是我正在使用的。
另请查看此处:PHP 数组按值(而非键)删除
This solution is the combination of @Peter's solution for deleting multiple occurences and @chyno solution for removing first occurence. That's it what I'm using.
Also have a look here: PHP array delete by value (not key)
unset
array_search
有一些非常可怕的副作用,因为它可能会意外地从数组中删除第一个元素,无论值如何:如果您知道该值保证在数组,就用它吧,但我认为 array_diff 更安全。 (我使用的是php7)
The
unset
array_search
has some pretty terrible side effects because it can accidentally strip the first element off your array regardless of the value:If you know that the value is guaranteed to be in the array, go for it, but I think the
array_diff
is far safer. (I'm using php7)首先,正如其他人提到的,您将使用“array_search( )" & “unset()”方法如下所示:-
现在重新-索引同一数组,而不对任何数组值进行排序,您将需要使用“array_values()”方法如下所示:-
希望有帮助。
First of all, as others mentioned, you will be using the "array_search()" & the "unset()" methodsas shown below:-
Now to re-index the same array, without sorting any of the array values, you will need to use the "array_values()" method as shown below:-
Hope it helps.
好吧,这有点长,但做了一些很酷的事情。
我试图过滤电子邮件列表,但排除某些域和电子邮件。
下面的脚本将...
首先,您需要一个包含电子邮件列表的数组,然后您可以将某些域或单个电子邮件帐户添加到排除列表中。
然后它会在最后输出一个干净记录的列表。
Okay, this is a bit longer, but does a couple of cool things.
I was trying to filter a list of emails but exclude certain domains and emails.
Script below will...
First you need an array with a list of emails and then you can add certain domains or individual email accounts to exclusion lists.
Then it will output a list of clean records at the end.
为了查找并删除数组中值的多个实例,我使用了以下代码
To find and remove multiple instance of value in an array, i have used the below code