-1

誰かがこのコードを修正するのを手伝ってくれませんか? 奇妙なエラーが発生しています:

Wrong parameter count for in_array() in /home/dearyout/public_html/lib/header.php on line 128

コード:

<?php 
  $pages = array("random-number-generator", "calculator"); 
    if (in_array(stripos($_SERVER['REQUEST_URI'], $pages))) { 
    echo "active"; 
   } 
?>
4

5 に答える 5

3

括弧の使い方が間違っていました:

<?php 
  $pages = array("random-number-generator", "calculator"); 
    if (in_array(stripos($_SERVER['REQUEST_URI']), $pages)) { 
    echo "active"; 
   } 
?>

このコードはあなたがやりたいことをしませんが、少なくともあなたの質問には答えています.

于 2012-07-05T18:21:16.043 に答える
1

エラーを簡単に黙らせることができます (@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 つの可能性があります。

  1. クエリ パラメータの使用。URLは次のようになりますhttp://example.org/index.php?page=calculator

    if (isset($_GET['page']) && in_array($_GET['page'], $pages)) ....
    
  2. パス セグメントの使用。URLは次のようになりますhttp://example.org/index.php/calculator

    $path = trim($_SERVER['PATH_INFO'], '/');
    $pathsegments = explode('/', $path);
    if (isset($pathsegments[0]) && in_array($pathsegments, $pages)) ...
    
于 2012-07-05T18:43:51.203 に答える
0

これをして:

<?php 
  $pages = array("random-number-generator", "calculator"); 
  $variable = stripos($_SERVER['REQUEST_URI'], $pages);
    if (in_array($variable)) { 
    echo "active"; 
   } 
?>

in_array()2 つのパラメーターが必要な場合。

于 2012-07-05T18:22:48.967 に答える
0

関数に渡すパラメーターは 1 つだけですin_array

于 2012-07-05T18:22:33.523 に答える
0

$_SERVER['REQUEST_URL']が からの文字列の 1 つを保持しているかどうかを確認したい場合、$pages何らかの方法でそれらの文字列をループする必要があると思います。おそらく次のようなものです:

<?php 
    $pages = array('random-number-generator', 'calculator');
    foreach($pages as $p) {
        if (stripos($_SERVER['REQUEST_URI'], $p)!==false) echo "active";
    }
于 2012-07-05T18:31:48.993 に答える