阵列以串转换从PHP 5升级到PHP 7时

问题描述 投票:0回答:2

我已经升级到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.我已经通过论坛相近岗位走了,但至今没有工作对我来说已经停止过。

php php-7
2个回答
2
投票

$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开始字符串的部分是一个数组,该给你一个阵列到字符串转换错误。


0
投票

$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;

这将是很好的初始化当你创建初始数据这一关键

© www.soinside.com 2019 - 2024. All rights reserved.