在php中查找数组中的元素

时间:2013-03-11 06:52:19

标签: php arrays search

我有以下从我的css文件中提取的类名数组

test array after printing values:

Array
(
  [0] => #sa_nav
  [1] => #sa_nav ul li.account
  [2] => .loyaltyBox
)
 if(array_search("#sa_nav",$test))
 {
  echo 'Element is exist';
 }
 else
 {
  echo 'Element is not exist';
 }

虽然元素存在于数组中,但它会打印“元素不存在”。请帮忙

7 个答案:

答案 0 :(得分:4)

使用in_array功能

$test = array("#sa_nav", "#sa_nav ul li.account", ".loyaltyBox");

if (in_array("#sa_nav", $test)) {
  echo 'Element is exist';
} else {
  echo 'Element is not exist';
}

//输出

Element is exist

答案 1 :(得分:2)

array_search执行的操作是在数组中搜索给定值,并在成功时返回相应的键

这意味着它不返回true或false,因此请使用in_array() php函数。

in_array - 检查数组中是否存在值

$test = array("#sa_nav","#sa_nav ul li.account",".loyaltyBox");

if(in_array("#sa_nav",$test))
{
  echo 'Element is exist';
}
else
{
  echo 'Element is not exist';
}

搜索并返回TRUE FASLE

function search_array($arrays, $cssSelector)
{
   foreach($arrays as $key => $array)
   {
      if ( $array === $cssSelector )
         return true;
   }
   return false;
}

并将其称为search_array($array,'#sa_nav');

答案 2 :(得分:2)

  

array_search()搜索一个值并返回相应的值   密钥如果匹配。

现在你的情况 -

#sa_nav键值为0

所以进入IF循环它会评估类似的东西 -

array_search("#sa_nav",$test) return value is `0` [Zero].

因此表达式将被评估为 -

if(0)

所以输出 -

Element is not exist

如果你尝试使用这个代码块,它将被评估为true

$test = array("#sa_nav","#sa_nav ul li.account",".loyaltyBox");

 if(array_search(".loyaltyBox",$test))
 {
  echo 'Element is exist';
 }
 else
 {
  echo 'Element is not exist';
 }

要使您的代码片段正常工作,您可以使用in_array()方法尝试,如大多数其他答案所示。

答案 3 :(得分:1)

手册始终是第一个看的地方:

  

array_search

     

如果在数组中找到针,则返回针的键,否则返回FALSE。

     

警告

     

此函数可能返回布尔值FALSE,但也可能返回非布尔值,其值为FALSE。有关更多信息,请阅读有关布尔值的部分。使用===运算符测试此函数的返回值。

答案 4 :(得分:0)

检查此代码

$test = array("#sa_nav","#sa_nav ul li.account",".loyaltyBox");

 if(in_array("#sa_nav",$test))
 {
  echo 'Element is exist';
 }
 else
 {
  echo 'Element is not exist';
 }

答案 5 :(得分:0)

答案 6 :(得分:0)

首先,当您提出类似这样的问题时,请考虑使用var_dump()来显示您的数组所包含的内容。

其次,你的病情应该做一个简单的改变:

if (false !== array_search("#sa_nav",$test)) {
}

如果#sa_nav是第一项,array_search()将返回0,其评估为false。考虑到你并没有真正以任何特别有意义的方式使用array_search()的返回值,你也可以使用in_array(),它总是返回一个布尔值。