我的代码中具有对象属性,如下所示:
$obj ->field_name_cars[0];
$obj ->field_name_clothes[0];
问题是我有100多个字段名称,需要动态写入属性名称。否则,对象名称和属性的键将始终相同。所以我尝试了:
$obj -> $field[0];
希望可以动态更改属性名称并访问正确的值。但是,我一直在stdClass :: $ field中得到’undefined property $ field;。
我或多或少尝试在执行之前动态编写php,以便它可以输出适当的值。关于如何处理此问题的想法?
PHP
7引入了对在解析器级别处理间接变量和属性的方式的更改(有关更多详细信息,请参见相应的RFC)。这使实际行为更接近预期,并意味着在这种情况下$obj->$field[0]
将产生预期的结果。
在不需要(现在已改进)默认行为的情况下,仍然可以使用花括号将其覆盖,如下所示。
像这样写访问:
$obj->{$field}[0]
每当由于变量变量引起歧义时,这种“用大括号括起来”的技巧在PHP中很有用。
考虑一下初始代码$obj->$field[0]
-这是否意味着“访问名称是在属性中的属性$field[0]
”,还是“使用0
名称是在属性中的属性的键访问元素$field
?”
大括号可以使您显得清晰。
问题内容: 我如何做到这一点: 问题答案: 请改用方括号表示法。 或者,在现代JavaScript中:
问题内容: 我们如何使JSON属性名称动态化。例如 序列化此对象时,它另存为,但我想使键也像一样动态。任何帮助深表感谢。 问题答案: 您可以使用JsonAnySetter JsonAnyGetter批注。您可以在后面使用实例。万一您总是可以在其他情况下使用或其他实现。下面的示例显示了使用此方法并根据需要创建任意数量的-s是多么容易: 上面的代码打印:
根据指定对象创建一个新对象,使其所有的 key 都小写。 使用 Object.keys() 和 Array.reduce() 根据指定对象创建一个新对象。 使用 String.toLowerCase() 将原始对象中的每个 key 转换为小写。 const lowercaseKeys = obj => Object.keys(obj).reduce((acc, key) => { ac
我试图描述的API有一个结构,其中根对象可以包含任意数量的子对象(属性本身就是对象)。根对象中的“键”或属性是子对象的唯一标识符,值是子对象的其余数据。 可以类似地将其建模为数组,例如: 但这既使得识别属性在结构上不那么清楚,又使得子ID之间的唯一性是隐式的,而不是显式的,所以我们想使用一个对象或一个映射。
我在互联网上到处搜索,寻找在特定页面上有条件地显示WooCommerce产品属性数据的方法。 如果属性某物有一个值,并且它在/上?过滤=1 如果属性位于特定的筛选页面上,我希望以不同的方式显示它们 前任:http://www.colorselectcoil.com/color-match-tool/?filtering=1 基于这个过滤的页面,显示一个产品属性“某物酷” 如果它是一个普通的Word
问题内容: 我有带有“ operation.date”,“ operation.name”等列的mysql表。用我获取该表数据作为对象后,得到此信息(行的print_r): 我怎么存取权限,并和所有其他古怪的命名对象的属性? 问题答案: 在您的SQL查询中指定别名,例如 或访问这些属性, 或将对象强制转换为数组,如下所示:。