You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP 7.2类属性存对象数组报错求助:数组转字符串转换错误

解决你的PHP "Array to string conversion" 错误

嘿,我一眼就发现问题所在了——你在调用array_push的时候,访问对象属性的写法错了!

修正后的完整代码

class MyProduct { public $id; public $stocks = array(); }
class MyStock { public $quantity; public $leadTime; }
private function Test() {
  $prod = new \MyProduct();
  $prod->id = 1;
  $stock1 = new \MyStock();
  $stock1->quantity = 10;
  $stock1->leadTime = 2;
  // 关键修正:去掉$stocks前面的$符号
  array_push($prod->stocks, $stock1);
  // 或者更简洁的替代写法(推荐):
  // $prod->stocks[] = $stock1;
}

为什么会触发这个错误?

当你写$prod->$stocks时,PHP会把$stocks当作一个变量名去解析,但你根本没定义过这个变量,所以它会被默认当作空字符串处理。这时候相当于你在尝试访问$prod->""(一个不存在的空字符串属性),PHP会自动为这个属性创建一个字符串类型的默认值。当你试图往字符串类型的属性里push数组元素时,就触发了"Array to string conversion"的错误。

小技巧分享

在PHP中,往数组末尾添加单个元素时,直接用$prod->stocks[] = $stock1这种写法,比调用array_push()更简洁,性能也更好哦。

内容的提问来源于stack exchange,提问作者girtri

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.06 20:27:50