使用strpos与数组进行比较

时间:2013-02-04 14:04:20

标签: php

我有以下代码:

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"

3 个答案:

答案 0 :(得分: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"';
}

答案 1 :(得分: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"';
    }
}

答案 2 :(得分: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) {}

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