如何动态编写PHP对象属性名称?

用户名

我的代码中具有对象属性,如下所示:

$obj ->field_name_cars[0];
$obj ->field_name_clothes[0];

问题是我有100多个字段名称,需要动态写入属性名称。否则,对象名称和属性的键将始终相同。所以我尝试了:

$obj -> $field[0];

希望可以动态更改属性名称并访问正确的值。但是,我一直在stdClass :: $ field中得到'undefined property $ field;。

我或多或少尝试在执行之前动态编写php,以便它可以输出正确的值。关于如何处理此问题的想法?

乔恩

PHP 7.0更新

PHP 7引入了在解析器级别处理间接变量和属性的方式的更改有关更多详细信息,请参见相应的RFC)。这使实际行为更接近预期,并且意味着在这种情况下$obj->$field[0]将产生预期的结果。

在不需要(现在已改进)默认行为的情况下,仍然可以使用花括号将其覆盖,如下所示。

原始答案

像这样写访问:

$obj->{$field}[0]

每当由于变量变量引起歧义时,这种“用大括号括起来”的技巧在PHP中很有用。

考虑一下初始代码$obj->$field[0]-这是否意味着“访问名称是在属性中的属性$field[0]”,或“使用0名称是在属性中的属性的键访问元素$field?” 大括号可以让您显得很明确。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章