0

收到错误 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;
4

2 回答 2

0

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

function hasError($result) {
        if(isset($result["success"]) && $result["success"] === true) {
            $this->_lasterror = false;
            return false;
        }
        $this->_lasterror = $result["error"];
        return true;
于 2017-10-14T10:45:03.120 回答
0

你有两个重要的错误!!

首先:您需要使用“或”来获取数组的值

$value = $array["KEY_HERE"];

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

PHP 对引号很友好 =)


第二:您需要检查数组 $result 中是否存在“错误”键,如“成功”

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

这是什么意思“非法字符串偏移'错误'?数组 $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 **/
于 2017-10-14T10:58:02.637 回答