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

时间:2010-10-24 15:07:31

标签: php oop

我有一个对象,我想动态地进行交互。我想将game1_team1重命名为:

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

是game1_team2,game2_team1,game2_team2,game3_team1等。基于他们所处的循环。

我试过了:

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

但它返回

  

致命错误:无法使用字符串偏移量   作为一个数组

更新:根据Saul的回答,我将代码修改为:

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

摆脱了致命错误,但没有返回值。

3 个答案:

答案 0 :(得分:7)

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

$i = 1;
$j = 1;

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

答案 1 :(得分:0)

除非您创建新属性并删除旧属性,否则无法重命名。 访问动态名称,如下所示:

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

请注意$->之间的dynamic

删除并创建示例:

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

答案 2 :(得分:0)

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