エラーを簡単に黙らせることができます (@John_Conde の回答を参照) が、ここでのより大きな問題は、コードが意味をなさないことです。
REQUEST_URI の任意の場所にある 2 つの文字列のいずれかを探しているようです。しかし、これは URI を構造化する方法ではありません。
これは、おそらくあなたが意味することの厳密な翻訳です。次に、なぜそれが間違っているのかを説明します。
function stripos_array($haystack, $needles, $offset=0) {
foreach ($needles as $needle) {
if (FALSE!==stripos($haystack,$needle,$offset)) {
return True;
}
}
return False;
}
$pages = array("random-number-generator", "calculator");
if (stripos_array($_SERVER['REQUEST_URI'], $pages) {
echo 'active';
}
これは、あなたがしていることの正しい実装である可能性がありますか? いくつかのサンプルを見てください:
stripos_array('/not-a-random-number-generator', $pages) // true!
stripos_array('/some/other/part/of/the/site?searchquery=calculator+page', $pages); // true!
stripos_array('/random-number-generator/calculator', $pages); // true!! but meaningless!!
あなたが本当にやりたいことは、実際のURL ルーティングを使用することだと強く思います。次の 2 つの可能性があります。
クエリ パラメータの使用。URLは次のようになりますhttp://example.org/index.php?page=calculator
if (isset($_GET['page']) && in_array($_GET['page'], $pages)) ....
パス セグメントの使用。URLは次のようになりますhttp://example.org/index.php/calculator
$path = trim($_SERVER['PATH_INFO'], '/');
$pathsegments = explode('/', $path);
if (isset($pathsegments[0]) && in_array($pathsegments, $pages)) ...