我有一个像下面的对象
stdClass Object
(
[0] => stdClass Object
(
[className] => stdClass Object
(
[attribute] => stdClass Object
(
[name] => Aabir Hussain
[phone] => 9555555985
[email] => aabir@gmail.com
[create_on] => 12-10-2016 12:12:12
[status] => Active
)
[validationMessage] => stdClass Object
(
[name] => no_error
[phone] => no_error
[email] => Email Already Taken, Please Choose Another One
[create_on] => no_error
[status] => no_error
)
[scenario] => create
)
)
)
我希望在不使用foreach或for循环的情况下获取名称的值
我尝试了this link,他们已经提供了不同的方法来从Object获取值,如下所示。但没有什么对我有用。
print_r($arrayMultiIndex[0]); //not working because it is not an array;
print_r($arrayMultiIndex{0}); //not working
print_r($arrayMultiIndex->0); //not working
我使用的是PHP 7.0.9
修改
print_r($arrayMultiIndex->{0}); //also not working or
echo $arrayMultiIndex->{0}->className->attribute->name //not working
编辑Php Fiddle php fiddle link
答案 0 :(得分:1)
以下链接可能会帮助您
How to access object properties with names like integers?
基本上,对象属性访问的Curly-brace语法不适用于全数字键。
或者不是简单地对类型进行类型转换,而是使用我修改的函数arraytoobject版本。这仅适用于您的特定需求。我正在将密钥转换为字符串,否则它将无法访问。
.filter-me {
filter: <filter-function> [<filter-function>]* | none
}
答案 1 :(得分:0)
如果您不想使用foreach和for循环,则将此对象转换为数组并过滤掉'name'属性值,并以正常方式访问它,如$ arr [0],$ arr [1],.. 。 即下面给出的代码,它不使用foreach和for循环,然后获取name属性值..
//Converting object into array
$arrayMultiIndex_arr = json_decode(json_encode($arrayMultiIndex), TRUE);
//Filtering out name property value from array
$name_array = array_column(array_reduce(array_reduce($arrayMultiIndex_arr, 'array_merge', array()), 'array_merge', array()), "name");
print_r($name_array);
答案 2 :(得分:0)
当我在任何地方搜索时,我找不到任何可行的解决方案,但我可以给你一个建议,将对象转换为数组。
$arrayMultiIndex = (array)$arrayMultiIndex;
echo $arrayMultiIndex[0]['className']['attribute']['name'];
Online Example此代码。
请阅读整套答案表格here...