首页 > 解决方案 > 如何在 PHP 7.4 中分配多维数组?

问题描述

我正在尝试在 PHP 7.4 中分配一个多维数组。我正在从 PHP 7.2 切换到 7.4,但不知道如何解决这个问题。

$model->a = $model->a ?? [];
$model->a->b = $model->a->b ?? [];

我收到错误消息:

尝试分配非对象的属性“b”。

标签: php

解决方案


如果$model->a不存在,则将其设置为数组,然后尝试设置$model->a->ba它是数组而不是对象。

因此,您要么需要分配一个对象,要么根据需要替换另一个类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()魔术方法是否可以帮助您。


推荐阅读