严格标准:只有变量才能通过引用传递


Strict Standards: Only variables should be passed by reference

Im'正在获取错误:

严格标准:只有变量才能通过引用传递

这是代码:

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>    ';
    }
}

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

此错误是由于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

还有一句话:

混合array_shift(array&$array)

正如你从手册中看到的,你必须通过引用传递它(因为你不能更改函数的签名),你可以通过引用传递这些:

  • 变量,即foo($a)
  • 新语句,即foo(New foobar())
  • 从函数返回的引用,即:

通过参考

如您在手册(此处)中所见,array_shift引用的是数组,而不是实际值。

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

尝试以下代码

 $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>    ';
    }
    }