1

我有以下代码:

if ( (strpos($page,array('careers','employers','specialist-areas','job-search','job-details','job-apply','register-your-cv') == true)) ) { echo ' class="selected"'; }

这应该是在数组中找到与$page变量的任何匹配项。

但是它不起作用......我是否使用了strpos错误的数组?

$page可能包含的示例:"default careers page"

4

3 回答 3

1

Strpos 用于在字符串中查找字符串。你需要的是in_array。编辑:误解了你的问题。这是应该工作的代码。

if((count(array_intersect(array('careers','employers','specialist-areas','job-search','job-details','job-apply','register-your-cv'), explode(' ', $page)))) ) 
{
  echo ' class="selected"';
}
于 2013-02-04T14:06:00.053 回答
1

使用此代码:

$array = array(
    'careers',
    'employers',
    'specialist-areas',
    'job-search',
    'job-details',
    'job-apply',
    'register-your-cv',
);

foreach($array as $string) {
    if((strpos($page,$string) !== false))  {
        echo ' class="selected"';
    }
}
于 2013-02-04T14:08:04.617 回答
1

你需要$page在数组的每个元素中寻找,所以你需要一些这样的函数:

function strpos_array($haystack, $needles) {
    if ( is_array($needles) ) {
        foreach ($needles as $str) {
            if ( is_array($str) ) {
                $pos = strpos_array($haystack, $str);
            } else {
                $pos = strpos($haystack, $str);
            }
            if ($pos !== FALSE) {
                return $pos;
            }
        }
    } else {
        return strpos($haystack, $needles);
    }
}
if (strpos_array($page, $pages) !== FALSE) {
    echo ' class="selected"'; 
}

另外,请确保您不要像这样编写代码:

if (strpos($page, $url) == true) {}

因为 if$page位于 的开头$url, strpos 将返回 0 ,这将使您的比较失败。

于 2013-02-04T14:09:42.437 回答