2014-03-27 49 views
0

严格标准:只有变量应通过/home/zumpu/public_html/cats/cats-0.8.0/lib/DataGrid.php上的参考传递1519行严格标准:只有变量应通过引用传递

严格的标准:只有变量应当参照在/home/zumpu/public_html/cats/cats-0.8.0/lib/DataGrid.php转嫁线1535

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

帮助卡住2我出去IA天

+1

'$ indexes = array_keys($ this - > _ currentColumns); if(end($ indexes)!= $ index)...' –

+0

from docs http://php.net/end --' end(array&$ array)' - >'数组。该数组通过引用传递,因为它由函数修改。这意味着你必须将它传递给一个实变量,而不是一个返回数组的函数,因为只有实际变量可以通过引用传递.'必须将变量传递给'end()',而不是函数,即。 'array_keys()'。 – Sean

+0

[严格标准:只有变量应该通过引用传递]的可能重复(http://stackoverflow.com/questions/2354609/strict-standards-only-variables-should-be-passed-by-reference) –

回答

0

严格地说,你不应该将函数的返回值直接传递给anoth这个函数将其参数作为引用,而不先将其分配给一个命名变量。

通常作品,无论如何,和可能不会打破,[直到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) 
      ); 
0

尝试 -

$keys = array_keys($this->_currentColumns); 
if (end($keys) != $index){ 

$md5InstanceName, end($keys), 

从文档http://php.net/end -
end (array &$array) - >The array. This array is passed by reference because it is modified by the function. This means you must pass it a real variable and not a function returning an array because only actual variables may be passed by reference.必须将一个变量传递给end(),而不是函数,即。 array_keys()

相关问题