即使字符串存在,array_search函数也返回false

时间:2014-04-03 11:20:09

标签: php arrays

我试图在数组中找到数组值的key。所以我尝试array_search()来做到这一点。如果找到值则返回键,如果没有等值,则返回false。在这里,即使字符串(false)存在,也会得到testing@example.com

    <?php
    $one = array('testing@example.com','example@example.com');
    $two = array('testing@example.com');
    var_dump(array_search($one,$two)); // getting false even the string exist, 
     //am i missing any thing
    ?>

我弄错了,这是因为字符串中有@符号吗?我不知道。谁能对此有所了解?

6 个答案:

答案 0 :(得分:4)

要在你的情况下使用array_search,你必须作为第一个参数给出字符串 - 而不是数组:

$one = array('testing@example.com','example@example.com');
$two = array('testing@example.com');
var_dump(array_search('testing@example.com',$two));

然后它会起作用。

如果要查找数组$one中数组$two的所有值,请使用array_intersect

$intersection = array_intersect('testing@example.com',$two);

然后检查是否找到简单的count

var_dump( count($intersection) > 0 );

答案 1 :(得分:1)

应该是:

$one = array('testing@example.com','example@example.com');
$two = array('testing@example.com');
var_dump(array_search($two,$one));

答案 2 :(得分:1)

see: function array_search

你可以反转

$one 

和     $两个

 var_dump(array_search($two,$one));

答案 3 :(得分:1)

试试这个:

<?php
    $one = array('testing@example.com','example@example.com');
    $two = array('testing@example.com');
    var_dump(in_array($two, $one)); // true
    // also, isset more fast in case when $two is string:
    $two = 'testing@example.com';
    var_dump(isset($one[$two])); // true

答案 4 :(得分:1)

array_search中,它检查第一个参数是否在第二个参数中。

array_search($one,$two)

您正在检查较小数组中较大的数组。

你应该做的是检查较小的数组是否像这样大的数组

array_search($two,$one)

答案 5 :(得分:1)

0表示php中的falsearray_search返回数组键,您应该使用===运算符来检查

 if(array_search($one,$two) !== false )
      // exists
  

警告此函数可能返回布尔FALSE,但也可能返回a   非布尔值,其值为FALSE。请阅读有关的部分   布尔值获取更多信息。使用=== operator进行测试   返回此函数的值。

REFERENCE