我已经升级到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
开始字符串的部分是一个数组,该给你一个阵列到字符串转换错误。
$categories[$prd['category_id']]['products'][$prd['product_id']] = $prd;
在你的情况$categories[$prd['category_id']]['products']
是一个字符串,但你使用它作为数组。
无论是'products'
关键应该是在原始数据的数组:
array(2) {
[278515]=>
array(8) {
["category_id"]=>
string(6) "278515"
...
["products"]=>
array(0) {
}
}
要么
你应该使用不同的阵列键用于容纳产品信息列表。喜欢的东西$categories[$prd['category_id']]['products_list'][$prd['product_id']] = $prd;
这将是很好的初始化当你创建初始数据这一关键