这有什么不对吗?

时间:2012-07-05 18:19:43

标签: php

有人可以帮我解决这个问题吗?我收到一些奇怪的错误:

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"; 
   } 
?>

5 个答案:

答案 0 :(得分:3)

您对括号的使用不正确:

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

此代码不会执行您希望的操作,但至少您的问题已得到解答。

答案 1 :(得分: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!!

我强烈怀疑你真正想要做的是使用一些真正的网址路由。这有两种可能性:

  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)) ...
    

答案 2 :(得分:0)

您只将一个参数传递给in_array函数。

答案 3 :(得分:0)

你这样做:

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

in_array()需要两个参数时。

答案 4 :(得分: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";
    }