PHP警告:非法字符串偏移'错误'圆形插件

时间:2017-10-14 10:41:08

标签: php roundcube vtigercrm

获取错误PHP警告:非法字符串偏移'错误'在第93行的../roundcube/plugins/vtrc/vtwsclib/Vtiger/WSClient.php

php文件中的

功能(第93行结束)

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

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

您有两个重要错误!!

首先:您需要使用'或者"获取数组的值

$value = $array["KEY_HERE"];

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

PHP很友好,引号=)

第二:您需要检查"错误"密钥存在于Array $结果中,如" success"

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

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

$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 **/