Php 严格的标准:只有变量应该通过引用传递

Php 严格的标准:只有变量应该通过引用传递,php,mysql,Php,Mysql,严格标准:第1519行的/home/zumpu/public_html/cats/cats-0.8.0/lib/DataGrid.php中只能通过引用传递变量 严格标准:第1535行的/home/zumpu/public_html/cats/cats-0.8.0/lib/DataGrid.php中只能通过引用传递变量 if ($sizable) { $formatString = '<th align="left" class="re

严格标准:第1519行的/home/zumpu/public_html/cats/cats-0.8.0/lib/DataGrid.php中只能通过引用传递变量

严格标准:第1535行的/home/zumpu/public_html/cats/cats-0.8.0/lib/DataGrid.php中只能通过引用传递变量

if ($sizable)
            {
                $formatString = '<th align="left" class="resizeableCell" '
                    . 'style="width:5px; border-collapse: collapse; '
                    . '-moz-user-select: none; -khtml-user-select: none;';

               if (end(array_keys($this->_currentColumns)) != $index) //line 1519
               {
                   //Uncomment for gray resize bars
                   $formatString .= 'border-right:1px solid gray;';
               }

                $formatString .=
                      'user-select: none;" onmouseover="style.cursor = '
                    . '\'e-resize\'" onmousedown="startResize(\'cell%s%s\', '
                    . '\'table%s\', \'cell%s%s\', %s, \'%s\', \'%s\', '
                    . '\'%s\', \'%s\', this.offsetWidth);">';

                echo sprintf(
                    $formatString,
                    $md5InstanceName, $index,
                    $md5InstanceName,
                    $md5InstanceName, end(array_keys($this->_currentColumns)),// line 1535
                    $this->_tableWidth,
                    urlencode($this->_instanceName),
                    $_SESSION['CATS']->getCookie(),
                    $data['name'],
                    implode(',', $cellIndexes)
                );

                echo '<div class="dataGridResizeAreaInnerDiv"></div></th>', "\n";
            }
        }
if($sizeable)
{
$formatString='';
埃科斯普林特(
$formatString,
$md5InstanceName,$index,
$md5InstanceName,
$md5InstanceName,end(数组_键($this->_currentColumns)),//第1535行
$this->\u桌面宽度,
urlencode($this->\u instanceName),
$\u会话['CATS']->getCookie(),
$data['name'],
内爆(“,”,$cellIndexes)
);
回显“”,“\n”;
}
}

帮我解决一个卡滞了2天的问题严格来说,你不应该将函数的返回值直接传递给另一个函数,该函数将其参数作为引用,而不首先将其分配给命名变量

它通常可以正常工作,并且可能不会中断,[直到PHP版本更改中断],但由于这些原因,它会生成一条
E_STRICT
消息

这将删除消息,但保留当前功能:

            $keys = array_keys($this->_currentColumns);

            if (end($keys)) != $index) //line 1519

            /* ... */

            echo sprintf(
                $formatString,
                $md5InstanceName, $index,
                $md5InstanceName,
                $md5InstanceName, end($keys),// line 1535
                $this->_tableWidth,
                urlencode($this->_instanceName),
                $_SESSION['CATS']->getCookie(),
                $data['name'],
                implode(',', $cellIndexes)
            );
试一试-

从文档中-
结束(数组和$array)
->
数组。此数组是通过引用传递的,因为它是由函数修改的。这意味着您必须传递一个实变量,而不是返回数组的函数,因为只能通过引用传递实际变量。
必须传递一个变量到
end()
,而不是传递函数,即
array\u keys()

$index=array\u keys($This->\u currentColumns);如果(end($indexes)!=$index).
来自文档-
结束(数组和$array)
->
数组。此数组是通过引用传递的,因为它是由函数修改的。这意味着您必须传递一个实变量,而不是返回数组的函数,因为只能通过引用传递实际变量。
必须传递一个变量到
end()
,而不是传递一个函数,即
array\u keys()
。可能的重复
$keys = array_keys($this->_currentColumns);
if (end($keys) != $index){
$md5InstanceName, end($keys),