0

Anybody having any idea, why it says:

Deprecated: Assigning the return value of new by reference is deprecated in phpExcelReader\Excel\reader.php on line 261

$this->_ole =& new OLERead();

I am using WAMP - PHP Version 5.3.13

4

4 に答える 4

7

古いphp構文またはメソッドである可能性があります。コードを変更したところ、うまくいきました:

ついさっき:

$this->_ole =& new OLERead();

変更: (アンパサンドを削除)

$this->_ole = new OLERead();

警告と通知はなくなりました。

于 2013-06-19T09:44:00.003 に答える
1

ここのアドバイスによるとhttp://code.google.com/p/php-excel-reader/issues/detail?id=82

問題は $this->_ole =& new OLERead(); にあります。明白で申し訳ありませんが、たとえば、この $t = new OLERead(); で修正できます。$this->_ole =& $t;

に変更$this->_ole = new OLERead();しました

    $t = new OLERead();
    $this->_ole =& $t;

エラー メッセージは表示されず、データもインポートされました。だからすべての作品。しかし、変更によって他の問題が発生しないかどうかはわかりません。分かる方、アドバイスお願いします。

于 2013-11-03T12:26:55.640 に答える
0

PHP 5.3.0 以降、foo(&$a); で & を使用すると、「call-time pass-by-reference」は推奨されないという警告が表示されます。

http://php.net/manual/en/language.references.pass.php

于 2013-06-19T09:43:57.003 に答える
0

これを試してみてください。これは完全に機能します。

Excel_reader2.php :

オフにする : //関数 OLERead(){ }

そして変更:

/**
* Constructor
*
* Some basic initialisation
function Spreadsheet_Excel_Reader($file='',$store_extended_info=true,$outputEncoding='') {
    $this->_ole = new OLERead();
    $this->setUTFEncoder('iconv');
    if ($outputEncoding != '') { 
        $this->setOutputEncoding($outputEncoding);
    }
    for ($i=1; $i<245; $i++) {
        $name = strtolower(( (($i-1)/26>=1)?chr(($i-1)/26+64):'') . chr(($i-1)%26+65));
        $this->colnames[$name] = $i;
        $this->colindexes[$i] = $name;
    }
    $this->store_extended_info = $store_extended_info;
    if ($file!="") {
        $this->read($file);
    }
} */
于 2021-01-27T07:34:50.710 に答える