严格标准:只应通过引用传递变量

时间:2015-02-12 12:20:31

标签: php

林'得到错误:

  

严格标准:只应通过引用传递变量

这是代码:

foreach (array_unique($meeting) as $entry) {
    if (array_shift(array_values($meeting)) == $entry and $venue ==""  or $venue == $entry) {
        echo '<b><a href="http://mr-tipster.com/pages/racecard.php?venue='.$entry.'">'.$entry.'</a>   </b> ';

        if ($venue =="") {
            $venue = array_shift(array_values($meeting));
        }

    } else {
        echo '<a href="http://mr-tipster.com/pages/racecard.php?venue='.$entry.'">'.$entry.'</a>    ';
    }

}

我在这里看到过有关它的其他消息,但我似乎无法解决错误

3 个答案:

答案 0 :(得分:2)

此错误是由于array_shift()功能造成的。你无法通过

array_values($meeting)

直接使用此函数,您必须将其保存在tmp变量中,例如:

$tmp = array_values($meeting);

然后你可以像这样使用它:

$venue = array_shift($tmp);  //Same for the if statement

有关array_shift()的详情,请参阅手册:https://php.net/manual/en/function.array-shift.php

从那里引用:

  

mixed array_shift(array &amp; $ array)

从手册中可以看出,您必须通过引用传递它(因为您无法更改函数的签名),您可以通过引用传递它们:

  • 变量,即foo($ a)
  • 新陈述,即foo(new foobar())
  • 从函数返回的引用,即:

Passing by Reference

答案 1 :(得分:0)

就像你在手册中看到的那样(herearray_shift引用数组而非实际值。

因此,您必须将array_values($meeting)分配给某个变量并将其与array_shift一起使用。

答案 2 :(得分:-1)

尝试以下代码

 $meeting = array_unique($meeting);
 foreach ( $meeting as $entry) {
    $meeting = array_values($meeting);
    $meeting = array_shift($meeting);
    if ( $meeting == $entry && $venue ==""  || $venue == $entry)
    {
    echo '<b><a href="http://mr-tipster.com/pages/racecard.php?venue='.$entry.'">'.$entry.'</a>   </b> ';
    if ($venue =="")
    {
    $meeting = array_values($meeting); 
    $venue = array_shift($meeting);
    }
    }
    else
    {
    echo '<a href="http://mr-tipster.com/pages/racecard.php?venue='.$entry.'">'.$entry.'</a>    ';
    }
    }