【问题标题】:Accessing Values From Object property that is an array从作为数组的对象属性访问值
【发布时间】:2012-12-11 04:32:54
【问题描述】:

如何访问作为数组的对象属性中的值?

例如:

$myObject = new MyClass;

$myObject->myproperty = array(1 => 'English', 2 => 'French', 3 => 'German');

如何使用来自$myObject->mypropery 的数组键获取单个属性值?使用$myObject->myproperty[3] 不起作用。

编辑:使用$myObject->myproperty[3] 确实有效。我发现问题的地方是这样做的:

$myproperty = 'myproperty';

echo $myObject->$myproperty[3]

// result : 'r'

但是,如果我在 $myObject->$myproperty 上执行 var_dump,我会看到我的数组。

【问题讨论】:

  • $myObject->$myProperty 将从$myProperty 获取值并将其用作属性名称。所以如果$myProperty = 'foo';,那么就和$myObject->foo一样。

标签: php arrays object properties


【解决方案1】:

试试这个:

$myObject->myproperty[3]

而不是这个:

$myObject->$myproperty[3]

【讨论】:

  • 当然,我已经回答过了,但是这是适用于多个类的行为,因此 $myObject->$myProperty 是必不可少的
【解决方案2】:

要访问您的 myproperty 数组值,请尝试以下操作:

$myObject->{$myproperty}[3]

代替:

$myObject->$myproperty[3]

这些被称为变量变量,更多信息请访问:http://php.net/manual/en/language.variables.variable.php

你的echo 结果是r 的原因是因为你的$mypropery 值是mypropery 并且你执行了这个echo $myObject->$myproperty[3] 这意味着你想要第三个字符数组键值。由于数组是基于零的,这意味着您将得到字符 r 作为结果。希望这能弄清楚为什么你的结果是r。

【讨论】:

  • 是的,我明白这正是我得到“r”的原因。你的答案是完全正确的。我之前尝试过相同的方法,但由于其他一些逻辑错误,它不起作用。又试了一次,确实如此。谢谢!
【解决方案3】:
$tmp = $myObject->$myproperty;
echo $tmp[1];
//or
echo $myObject->{$myproperty}[1];

【讨论】:

    猜你喜欢
    • 2013-12-02
    • 2019-10-15
    • 1970-01-01
    • 2023-01-27
    • 2016-10-28
    • 2013-02-05
    • 1970-01-01
    • 2015-08-03
    • 1970-01-01
    相关资源
    最近更新 更多