Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
基于PHP中的对象索引从JSON检索数据_Php_Json - Fatal编程技术网

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

基于PHP中的对象索引从JSON检索数据,php,json,Php,Json,我有一个$abcd变量,输出如下: echo $abcd; //Output: { "NID": 2, "STS": "3", "Options": { "Model": "model value", "Location": "location value", "Price": "price value", "Name": "Value" } } 在“选项”中,每个选项有3个名称和值。名称不是固定的,可以是anythings,选项中的对象数量可以是0到100

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

echo $abcd;
//Output:
{ 
 "NID": 2,
 "STS": "3",
 "Options": { 
   "Model": "model value",
   "Location": "location value",
   "Price": "price value",
   "Name": "Value"
 }
}
在“选项”中,每个选项有3个名称和值。名称不是固定的,可以是anythings,选项中的对象数量可以是0到100之间的任意数量。 我想知道是否有任何方法(首选JSON格式)可以将名称及其相关值分配给另外两个变量

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

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

$varName[2]=价格

$varValue[2]=price value

您不需要将它们分配给任何其他对象,只需
json\u decode()
JSONString,它们就变成了可以按原样使用的PHP对象

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

我不知道这背后的逻辑是什么

但您可以通过混合使用array_key和array_值来实现这一点,如下所示:

$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.

实例:

我说名称各不相同,型号、位置和价格只是一个例子。请参阅更新的建议,绝对没有理由将一个非常好的对象转换为一个数组,以满足您的需求。“它工作得很好。”埃里克莱辛斯基在代码中解释不正确?