PHP 警告:非法字符串偏移 'error' roundcube 插件

PHP Warning: Illegal string offset 'error' roundcube plugin

出现错误 PHP 警告:第 93 行

中的 ../roundcube/plugins/vtrc/vtwsclib/Vtiger/WSClient.php 中的非法字符串偏移量 'error'

php 文件中的函数(第 93 行结束)

function hasError($result) {
        if(isset($result[success]) && $result[success] === true) {
            $this->_lasterror = false;
            return false;
        }
        $this->_lasterror = $result[error];
        return true;

当您尝试获取具有字符串偏移量的关联数组的索引时,添加 "' 作为偏移量。将您的功能更改为

function hasError($result) {
        if(isset($result["success"]) && $result["success"] === true) {
            $this->_lasterror = false;
            return false;
        }
        $this->_lasterror = $result["error"];
        return true;

您有两个重要错误!!

首先:你需要使用'OR'来获取数组的值

$value = $array["KEY_HERE"];

Same as
$value = $array['KEY_HERE'];

PHP 对引号友好 =)


Second :您需要检查数组 $result 中是否存在 "error" 键,如 "success"

function hasError($result) {
    if(isset($result["success"]) && $result["success"] === true) {
        ... CODE ...
    }
    if(isset($result["error"])) {
        ... CODE ...
    }
    ... REST OF METHOD ...
}

“非法字符串偏移量 'error' 是什么意思? 确切地说数组 $result 不存在索引 'error'。请小心,因为脚本试图访问未为此数组声明(初始化 - 设置)的内存块。这很危险!!

$myArray = array();                /** Empty array **/
$myArray["error"] = "";            /** set index "error" with "" value **/

echo isset($myArray["error"]);     /** echo TRUE **/
echo isset($myArray["success"]);   /** echo FALSE **/
echo $myArray["success"];          /** throw exception "Illegal string offset 'success' ..." because not set in Array **/