注意:未定义的偏移量:1 在 webservice/dispatcher.php prestashop webservice 的第 36 行

Posted

技术标签:

【中文标题】注意:未定义的偏移量:1 在 webservice/dispatcher.php prestashop webservice 的第 36 行【英文标题】:Notice: undefined offset:1 in webservice/dispatcher.php line 36 in prestashop webservice 【发布时间】:2020-02-02 09:30:42 【问题描述】:

我正在使用 prestashop webservice api 在颤振上构建应用程序。但是,当我尝试从 api url 获取数据时,我收到了 php 通知作为“通知:未定义的偏移量:第 36 行 /webservice/dispatcher.php 中的 1”和对象列表的响应。这使我无法将对象解码为 json。

我转到该文件,错误在此块内:(第 35、36、37 行)

if (isset($_SERVER['HTTP_AUTHORIZATION']) && preg_match('/Basic\s+(.*)$/i', $_SERVER['HTTP_AUTHORIZATION'], $matches)) 
        list($name, $password) = explode(':', base64_decode($matches[1]));
        $_SERVER['PHP_AUTH_USER'] = strip_tags($name);

当我尝试在邮递员或浏览器中获取结果时,根本没有显示任何通知。

谁能帮助我如何摆脱这个通知或任何解码对象的解决方案?提前致谢

【问题讨论】:

你能在list($name, $password) ... 行之前添加一个var_dump($matches) 看看它是否给你任何明智的东西吗? @KoalaYeung 它返回一个数组:array(2) [0]=> string(50) "Basic M1E0OVE1VDhHTkJGVjdNUFI3SEc5RlQ0RVA5MlE0WkI=" [1]=> string(44) "M1E0OVE1VDhHTkJGVjdNUFI3SEc5RlQ0RVA5MlE0WkI=" base64_decode("M1E0OVE1VDhHTkJGVjdNUFI3SEc5RlQ0RVA5MlE0WkI=") 返回3Q49Q5T8GNBFV7MPR7HG9FT4EP92Q4ZB。没有颜色 : 供您的 list($name, $password) 解构。这就是您遇到错误的原因。 【参考方案1】:

PHP 的list 语法取赋值运算符= 的右侧,对其进行解构,然后将子代分配给其中的变量。

这样的列表语句:

list($name, $password) = $some_array;

期望$some_array 是一个包含至少 2 个子元素的数字数组。如果只有 1 个,PHP 会抱怨您缺少第二个项目(偏移量 1)。在您的情况下,explode 调用将需要在您的 base64_decode 结果的结果中使用 : 冒号,但情况可能并非如此。

为了防止这种情况,您可以修改它以不直接破坏您的explode 调用的结果。像这样:

if (isset($_SERVER['HTTP_AUTHORIZATION']) && preg_match('/Basic\s+(.*)$/i', $_SERVER['HTTP_AUTHORIZATION'], $matches)) 
        $name_and_password = explode(':', base64_decode($matches[1]));
        $name = $name_and_password[0] ?? ''; // if not set, default to be empty string ''
        $password = $name_and_password[1] ?? ''; // if not set, default to be empty string ''
        $_SERVER['PHP_AUTH_USER'] = strip_tags($name);

【讨论】:

以上是关于注意:未定义的偏移量:1 在 webservice/dispatcher.php prestashop webservice 的第 36 行的主要内容,如果未能解决你的问题,请参考以下文章

“注意:未定义的变量”、“注意:未定义的索引”和“注意:未定义的偏移量”使用 PHP

“注意:未定义的变量”、“注意:未定义的索引”和“注意:未定义的偏移量”使用 PHP

“注意:未定义的变量”、“注意:未定义的索引”和“注意:未定义的偏移量”使用 PHP

“注意:未定义的变量”、“注意:未定义的索引”和“注意:未定义的偏移量”使用 PHP

“注意:未定义的变量”、“注意:未定义的索引”和“注意:未定义的偏移量”使用 PHP

“注意:未定义的变量”、“注意:未定义的索引”和“注意:未定义的偏移量”使用 PHP