php - 为什么我需要“重新分配” stdClass 的对象以将其值用作字符串?
问题描述
这个错误:
可恢复的致命错误:stdClass 类的对象无法转换为字符串
$$site->nomCommission[$site->opponent][$alltheSeat->categorie] = (object) [
'gamesDate' => $gameDate,
'idGames' => $site->idGames
];
这不会:
$nomCommission = $site->nomCommission;
$$nomCommission[$site->opponent][$alltheSeat->categorie] = (object) [
'gamesDate' => $gameDate,
'idGames' => $site->idGames
];
现在,如果我转储两个变量,它们显然包含相同的字符串,因为它们是相等的。那么为什么一个被认为是一个对象,因为 var dump 告诉我它们都是字符串。也许我应该使用另一种语法?
$nomCommission = $site->nomCommission;
string(11) "Groupe Test"
我习惯“重命名”我的变量,因为它节省了我的时间,我避免了错误,而且这样做通常更干净,但取决于项目,我有时最终会重命名很多。我知道一个是一个对象(或者是一个对象?)但是我应该记住什么逻辑,什么时候重命名它们会浪费代码?
例如,有时这不起作用,它会引发相同类型的错误,但在这种情况下它确实有效,所以我有点困惑。分享一些光任何人?
$$nomCommission [$site->nomCommission]
解决方案
添加花括号以强制进行所需的解析:
${$site->nomCommission}[$site->opponent][$alltheSeat->categorie] = ...
您的代码被视为:
$obj = $$site;
$obj->nonCommission[$site->opponent][$alltheSeat->categorie] = ...
$$site
需要$site
是一个包含变量名称的字符串,但$site
它是一个对象,而不是一个字符串。
也就是说,你可以对变量变量做的任何事情几乎总是可以使用关联数组来完成,而且语法更容易理解。
推荐阅读
- c# - c# Naaudio音频电平捕获和显示,仅在打开录音属性时有效
- javascript - 多语言验证处理逻辑
- javascript - 如何动态更改 logoURL?
- python - 在python中对不同的列进行分组
- jquery - 如何通过下拉列表的变化根据数据属性对div进行排序
- qt - Qt QTreeView indexBelow 不起作用
- ios - 无法通过whatsapp分享pdf
- javascript - 为什么无论代码中的顺序如何,alert() 对话框都会首先显示?
- python - Django-,在模型表单中显示和过滤来自外键的特定字段
- python - 如何使用python对图像进行base64编码