0

我有以下从我的 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';
 }

尽管元素存在于数组中,但它会打印“元素不存在”。请帮助

4

7 回答 7

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
于 2013-03-11T06:53:30.217 回答
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');

于 2013-03-11T06:54:22.200 回答
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()大多数其他答案中建议的方法。

于 2013-03-11T07:01:07.730 回答
1

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

array_search

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

警告

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

于 2013-03-11T06:56:09.640 回答
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';
 }
于 2013-03-11T06:54:58.267 回答
0

您可以使用 PHP 内置功能

array_search — 在数组中搜索给定的值,如果成功则返回相应的键

或者您也可以使用

in_array — 检查一个值是否存在于数组中

于 2013-03-11T07:01:20.087 回答
0

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

其次,您的状况应该做一个简单的改变:

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

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

于 2013-03-11T07:35:05.493 回答