我试图在数组中找到数组值的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
?>
我弄错了,这是因为字符串中有@
符号吗?我不知道。谁能对此有所了解?
答案 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)
答案 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中的false
和array_search
返回数组键,您应该使用===
运算符来检查
if(array_search($one,$two) !== false )
// exists
警告此函数可能返回布尔
FALSE
,但也可能返回a 非布尔值,其值为FALSE
。请阅读有关的部分 布尔值获取更多信息。使用=== operator
进行测试 返回此函数的值。