PHP将Array转换为Object

时间:2017-03-31 11:14:37

标签: php

的var_dump($响应);

输出:

 array(1) { ["metafields"]=> array(1) { [13]=> array(10) { ["id"]=> int(32616923206) ["namespace"]=> string(7) "ly26638" } } }
 array(1) { ["metafields"]=> array(1) { [13]=> array(10) { ["id"]=> int(32641864774) ["namespace"]=> string(7) "ly26638" } } }

如何将$ response转换为对象来操作它,如下面的代码所示:

echo $response->metafields[0]->id;

我已尝试过以下代码,但没有任何结果:/

$object = json_decode(json_encode($response));

3 个答案:

答案 0 :(得分:2)

如果您想访问您的" metafields的id"比如$response = (object) array( 'metafields' => array( '13' => (object) array( 'id' => 32616923206, 'namespace' => "ly26638" ) ) ); ,那么你需要将你的响应数组转换为object。

实施例

$response->metafields[13]->id

然后您可以使用Parameter A=1,Parameter B=3.87,Parameter C=5.6,Has cancer = yes之类的语法来访问" id"值。

答案 1 :(得分:1)

如果使用(object) $response创建对象,子元素仍将是数组。然后你可以做

$response->metafields[13][id]

如果你想要整个链中的对象符号,你需要像sandip所提供的功能。

但为什么不打这个电话:

$response[metafields][13][id]

答案 2 :(得分:0)

您无法通过'[]'找到对象的成员。

'[]'用于数组,' - >'是为了对象。

因此输出空白的原因是: metafields [0]

以下代码错误:

echo $response->metafields[0]->id;

所以你应该改变数组的键,数组的键不应该是纯数

我尝试将密钥更改为'a13',代码为:

echo $response->metafields->a13->id;

我得到了“32616923206”。

这就是全部。 O(∩_∩)O〜