0

任何人有任何想法,为什么它说:

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

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

我在用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); 中使用 & 时,您将收到一条警告说“调用时传递引用”已被弃用;

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 回答