基于PHP中的对象索引从JSON中检索数据

时间:2017-03-14 17:23:00

标签: php json

我有一个$ abcd变量,以下是输出:

echo $abcd;
//Output:
{ 
 "NID": 2,
 "STS": "3",
 "Options": { 
   "Model": "model value",
   "Location": "location value",
   "Price": "price value",
   "Name": "Value"
 }
}

在“选项”中,我有3个名称和值。名称不是固定的,可以是任何名称,选项中的对象数可以是0到100之间的任何一个。 我想知道是否有任何方法(首选JSON格式)我可以将名称及其相关值分配给另外两个变量。

$的varName [0] =模型
$ varValue [0] =模型值

$的varName [1] =位置
$ varValue [1] =位置值

$的varName [2] =价格
$ varValue [2] =价格值

3 个答案:

答案 0 :(得分:1)

你不需要将它们分配给其他任何东西,只需要json_decode() JSONString,它们就会成为你可以按原样使用的PHP对象

$obj = json_decode($abcd);

echo $obj->Options->Model;
echo $obj->Options->Location;
echo $obj->Options->Price;

你的评论@

我说名字有所不同,模特,位置和价格只是一个例子

然后你可以做

foreach ($obj->Options as $prop => $val) {
    sprintf( '%s = %s', $prop, $val );
}

答案 1 :(得分:1)

我不确定这背后的逻辑是什么,

但你可以通过使用array_key和amp;的混合来实现这一点。 array_values如下:

$abcd = '{ 
 "NID": 2,
 "STS": "3",
 "Options": { 
   "Model": "model value",
   "Location": "location value",
   "Price": "price value",
   "Name": "Value"
 }
}';

$data = json_decode($abcd, true);
$keys = array_keys($data['Options']);
$values = array_values($data['Options']);


echo $keys[0] . " - " . $values[0]; // Model - model value
echo $keys[1] . " - " . $values[1]; // Location - location value
// ..... and so on.

直播示例:https://3v4l.org/GggRd

答案 2 :(得分:0)

$data = json_decode($abcd, true);
foreach($data['Options'] as $index => $value) {
    //do whatever you want
}
//or access them directly
$data['Options']['Model']