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) {}

$pageが先頭にある場合$url、strpos は比較に失敗する 0 を返すためです。

于 2013-02-04T14:09:42.437 に答える