[英]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.