简体   繁体   English

在PHP中动态访问对象属性数组元素

[英]Dynamically access an object property array element in PHP

I have an object, that I would like to interact with dynamically. 我有一个想要动态交互的对象。 I would like to rename the game1_team1 in: 我想将game1_team1重命名为:

$default_value = $individual_match->field_match_game1_team1[0]['value'];

to be game1_team2, game2_team1, game2_team2, game3_team1, etc. Based on the loop they are in. 分别是game1_team2,game2_team1,game2_team2,game3_team1等。基于它们所在的循环。

I have tried: 我努力了:

$dynamic = 'field_match_game'.$i.'_team'.$j;
$default_value = $individual_match->$dynamic[0]['value'];

but it returns 但它返回

Fatal error: Cannot use string offset as an array 致命错误:无法将字符串偏移量用作数组

Update: Based on Saul's answer, I modified the code to: 更新:根据Saul的回答,我将代码修改为:

$default_value = $individual_match->{'field_match_game'.$i.'_team'.$j}[0]['value'];

which got rid of the Fatal error, but doesn't return a value. 摆脱了致命错误,但没有返回值。

$individual_match->field_match_game1team1[0]['value'] = 'hello1';

$i = 1;
$j = 1;

$default_value = $individual_match->{'field_match_game'.$i.'team'.$j}[0]['value'];

'Renaming' is not possible unless you create a new property, and delete the old one. 除非您创建一个新属性并删除旧属性,否则“重命名”是不可能的。 Access dynamic names like this: 访问这样的动态名称:

$dynamic = "field_match_$i_team$j";
$default_value = $individual_match->$dynamic[0]['value'];

Note the $ between -> and dynamic . 注意$->dynamic之间。

Delete and create example: 删除并创建示例:

$oldProperty = "field_match_1_team1";
$newProperty = "field_match_$i_team$j";
$hold = $individual_match->$oldProperty;
unset($individual_match->$oldProperty);
$individual_match->$newProperty = $hold;

看一下: http : //php.net/manual/en/function.get-class-vars.php您可以在数组中列出所有对象的属性,然后仅选择所需的属性。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM