我有以下代码:
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"
答案 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,这将使您的比较失败。