-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 中的任何位置查找两个字符串之一。但这不是 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)) ...
    
于 2012-07-05T18:43:51.203 回答
0

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

于 2012-07-05T18:22:33.523 回答
0

你来做这件事:

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

什么时候in_array()需要两个参数。

于 2012-07-05T18:22:48.967 回答
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";
    }
于 2012-07-05T18:31:48.993 回答