2012-07-05 184 views
-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"; 
    } 
?> 

回答

3

您使用括號中是不正確的:

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

此代碼不會做你想讓它做什麼,但至少你的問題得到了回答。

+5

沒錯,但這個代碼也是荒謬的 – 2012-07-05 18:22:08

+1

謝謝你,現在的作品:) – Matty 2012-07-05 18:22:42

+4

@Matty,沒有也。 – 2012-07-05 18:23:07

0

您只將一個參數傳遞給in_array函數。

0

你這樣做:

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

in_array()需要兩個參數。

0

猜測您要檢查$_SERVER['REQUEST_URL']是否存在來自$pages的字符串之一,您可能需要以某種方式遍歷這些字符串。也許是這樣的:

<?php 
    $pages = array('random-number-generator', 'calculator'); 
    foreach($pages as $p) { 
     if (stripos($_SERVER['REQUEST_URI'], $p)!==false) echo "active"; 
    } 
1

我們可以很容易地沉默的錯誤(見@ John_Conde的答案),但這裏的更大的問題是,你的代碼是沒有意義的。

出現要嘗試在您的REQUEST_URI中的任意位置查找兩個字符串中的一個。但這不是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路由。這裏有兩種可能性:

  1. 使用查詢參數;網址看起來像http://example.org/index.php?page=calculator

    if (isset($_GET['page']) && in_array($_GET['page'], $pages)) .... 
    
  2. 使用路徑段;網址看起來像http://example.org/index.php/calculator

    $path = trim($_SERVER['PATH_INFO'], '/'); 
    $pathsegments = explode('/', $path); 
    if (isset($pathsegments[0]) && in_array($pathsegments, $pages)) ...