我试图在数组中找到数组值的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
?>
我弄错了,这是因为字符串中的@
符号吗? 我不知道。谁能对此给出一个想法?
要在你的情况下使用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 );
0
表示在 php 中false
并array_search
返回数组键,您应该使用===
运算符进行检查
if(array_search($one,$two) !== false )
// exists
警告 此函数可能返回布尔
FALSE
,但也可能返回 计算结果为FALSE
的非布尔值。请阅读有关 布尔值以获取更多信息。使用=== operator
测试 此函数的返回值。
参考
它应该是:
$one = array('testing@example.com','example@example.com');
$two = array('testing@example.com');
var_dump(array_search($two,$one));
参见:函数array_search
你可以反转
$one
和 $two
var_dump(array_search($two,$one));
试试这个:
<?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
在array_search
中,它会检查第一个参数是否在第二个参数中。
array_search($one,$two)
您正在检查较小阵列中的较大数组。
您应该做的是检查较小的数组是否在较大的阵列中,如下所示
array_search($two,$one)