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
相关产品推荐
相关产品推荐

