php - 如何在 PHP 7.4 中分配多维数组?
问题描述
我正在尝试在 PHP 7.4 中分配一个多维数组。我正在从 PHP 7.2 切换到 7.4,但不知道如何解决这个问题。
$model->a = $model->a ?? [];
$model->a->b = $model->a->b ?? [];
我收到错误消息:
尝试分配非对象的属性“b”。
解决方案
如果$model->a
不存在,则将其设置为数组,然后尝试设置$model->a->b
但a
它是数组而不是对象。
因此,您要么需要分配一个对象,要么根据需要替换另一个类stdclass
:
$model->a = $model->a ?? new stdclass;
$model->a->b = $model->a->b ?? new stdclass;
$model->a->b->c = 'some value';
或按原样分配一个数组,然后将其作为数组访问:
$model->a = $model->a ?? [];
$model->a['b'] = $model->a['b'] ?? [];
$model->a['b']['c'] = 'some value';
但是,对于数组,您不需要做所有这些,因为数组分配是动态的。这很好用:
$model->a['b']['c'] = 'some value';
至于从 PHP 7.2 到 7.4 的切换,这在 7.2 中也行不通,您必须在两者之间的错误报告方面有所不同。
您可能还想看看__set()魔术方法是否可以帮助您。
推荐阅读
- swift - 在调用 SwiftUi 中获取错误额外参数
- matlab - 地图投影需要多长时间?
- javascript - 如何更改引导导航的滚动文本颜色
- python - 在 Odoo 看板视图中显示和隐藏按钮
- directory - 如何使 Trace32 路径适用于所有其他用户?
- android - 删除用于接收 android.intent.action.SEND 的“选择对话”对话框
- php - 显示仅在过去 10 天 woocommerce 中添加的产品
- flutter - Flutter FutureBuilder 究竟是如何工作的?
- python - 是否有一种单行方式可以从张量流数据管道中获取下一个 N 个样本,而无需使用 for 循环?
- python-3.x - 建议修复 backtrader.py 上的“'numpy.int64' 对象没有属性 'to_pydatetime'”?