【问题标题】:Checking if value exists in array with array_search()使用 array_search() 检查值是否存在于数组中
【发布时间】:2011-11-30 22:06:40
【问题描述】:

如果0 可能是从array_search() 返回的可能键,那么使用此函数(或任何 php 函数)测试数组中是否存在元素的最佳方法是什么;如果有更好的方法,请分享)?

我试图这样做:

if(array_search($needle, $haystack)) //...

但如果$needle 是数组中的第一个元素,那当然会返回false。我想我要问的是我可以在这个if 语句中做一些技巧来让它表现得像我想要的那样吗?我试过做这些,但没有一个奏效:

$arr = array(3,4,5,6,7);

if(array_search(3, $arr) != false)  //...

if(array_search(3, $arr) >= 0)  //...

感谢您的帮助。

【问题讨论】:

    标签: php


    【解决方案1】:

    就是这样:

    if(array_search(3, $arr) !== false)
    

    注意=== PHP 运算符的使用,称为相同(在这种情况下不完全相同)。您可以在official doc 中阅读更多信息。您需要使用它,因为使用等于运算符您无法区分 0 和 false(或 null 或 '')。

    如果找到匹配项并希望使用整数值,更好的解决方案是:

    if (($pos = array_search(3, $arr)) !== false)
    {
       // do stuff using $pos
    }
    

    【讨论】:

    • 天哪。这是有史以来最快的答案
    • @Shredder 很高兴你喜欢它:p
    • 我第一次不得不使用这个运算符。耶
    • 这是更好的解决方案,因为它允许在检查后使用密钥。不知道为什么这不是公认的
    【解决方案2】:

    作为===!== 的替代品,您还可以使用in_array

    if (in_array($needle, $haystack))
    

    【讨论】:

    • 不错的选择。唯一的缺点是要获得位置,您必须调用另一个函数。
    • 啊!这就是我一直在寻找的 :) 谢谢!
    • @AurelioDeRosa 不需要钥匙 :)
    • 没问题 :) 但是,您仍然应该查看@Aurelio 的答案。有很多地方需要使用===!== 运算符。了解它们是任何 PHP 开发人员的要求。
    • 我确实做到了,并为他的回答感到高兴!就在这种情况下,你的回答就足够了。
    猜你喜欢
    • 1970-01-01
    • 2016-10-22
    • 2021-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多