注意:未定义的偏移量: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