php - 从 php 5 升级到 php 7 时数组到字符串的转换
问题描述
我已经升级到 php 7,现在这段代码抛出了一个数组到字符串的转换错误。
$categories[$prd['category_id']]['products'][$prd['product_id']] = $prd;
包含以下$categories
内容:
array(2) {
[278515]=>
array(8) {
["category_id"]=>
string(6) "278515"
["parent_id"]=>
string(1) "0"
["category_name"]=>
string(8) "Desserts"
["category_description"]=>
string(0) ""
["category_image"]=>
string(0) ""
["wholesaler_id"]=>
string(3) "296"
["category_position"]=>
string(2) "21"
["products"]=>
string(1) "2"
}
[0]=>
array(8) {
["category_id"]=>
string(1) "0"
["parent_id"]=>
string(1) "0"
["category_name"]=>
string(11) "No Category"
["category_description"]=>
string(20) "category_description"
["category_image"]=>
string(0) ""
["wholesaler_id"]=>
string(3) "296"
["category_position"]=>
string(1) "0"
["products"]=>
string(4) "1182"
}
}
并$prd
包含这个:
array(11) {
["product_id"]=>
string(7) "4195072"
["category_id"]=>
string(1) "0"
["parent_id"]=>
string(1) "0"
["product_num"]=>
string(1) "7"
["product_name"]=>
string(18) "Chicken Pizza, 12""
["product_description"]=>
string(0) ""
["product_image"]=>
string(0) ""
["product_price"]=>
string(4) "0.00"
["wholesaler_id"]=>
string(3) "296"
["is_variant"]=>
string(1) "0"
["is_mealdeal"]=>
string(1) "1"
}
这段代码曾经在 php 5 中工作,但自从我升级到 php 7 后就停止了。我在论坛中浏览过类似的帖子,但到目前为止对我没有任何帮助。
解决方案
$prd['category_id']
是0
,$prd['product_id']
是4195072
, 所以
$categories[$prd['category_id']]['products'][$prd['product_id']] = $prd;
翻译成
$categories[0]['products']['4195072'] = $prd;
并且因为$categories[0]['products']
是一个字符串 ( '1182'
),PHP 将其视为尝试为从位置 4195072 开始的字符串部分赋值。因为$prd
是一个数组,这会给您一个数组到字符串的转换错误。
推荐阅读
- c# - 是否可以向 AuthorizationHandler 的 HandleRequirementAsync 方法发送额外的参数?
- shell - 使用内置 bash 创建目录
- javascript - 如何在文本更改时插入保持固定的文本下划线?
- html - 我正在尝试将我的文章与标题和列表项居中,但标题已居中但列表项未正确对齐
- python - 任何阻止(或至少使其更难)其他进程或用户写入文件的方法
- c++ - 简单格斗游戏的代码,但在玩家健康变为 0 后游戏继续循环
- cmake - Cmake --config 自版本 3.20
- python - ValueError:发送str时,必须是十六进制字符串。得到:“'0x6e...32'”
- python - Python - 将坐标映射到直线和圆弧列表中
- reactjs - 如何通过用户输入绘制折线图?