我试图提取JSON的值,而没有给出引用的键。
这是我的JSON代码:
{"StatTrak™ Dual Berettas | Dualing Dragons (Battle-Scarred)":0.37,"★ StatTrak™ Huntsman Knife | Scorched (Well-Worn)":101.65,"Sticker | iBUYPOWER | DreamHack 2014":11.34,"MP9 | Sand Dashed (Well-Worn)":0.03,"★ Flip Knife | Urban Masked (Field-Tested)":61.74}
第一个值是名称,第二个值是价格。我有很长的JSON,有很多名字和价格。
name="StatTrak™ Dual Berettas | Dualing Dragons (Battle-Scarred)"<br>
price="0.37"
实际上,我不知道如何访问该名称以提取其他值。
我从另一个API获得了保存在我网站上的武器的名称。我必须提取此JSON的值,并将该名称与API之前给我的名称进行比较。
答案 0 :(得分:1)
名称是关键:
$array = json_decode($json, true);
foreach($array as $name => $price) {
echo "$name<br>$price<br>";
}
您看到的是print_r($array)
:
Array
(
[StatTrakΓäó Dual Berettas | Dualing Dragons (Battle-Scarred)] => 0.37
[Γÿà StatTrakΓäó Huntsman Knife | Scorched (Well-Worn)] => 101.65
[Sticker | iBUYPOWER | DreamHack 2014] => 11.34
[MP9 | Sand Dashed (Well-Worn)] => 0.03
[Γÿà Flip Knife | Urban Masked (Field-Tested)] => 61.74
)
答案 1 :(得分:0)
假设我理解正确并且您想通过键访问值:
首先,我建议您使用Javascript。您似乎并未解析任何应保持私有的个人或重要数据,那么为什么不让客户完成工作而不是让您的服务器做更多工作呢?
无论如何,至于PHP:
首先,您需要使用json_decode()
函数解码json字符串,为其提供2个参数 - 第一个是json字符串,第二个是简单的true布尔值,因此它将返回一个数组而不是一个数组json对象。该函数返回一个数组,其中每个键和值对应于json列表中的名称和价格,名称为键。为了访问该值,只需按键功能使用数组值($arr['weaponname']
将返回'weaponnane'的价格,假设它存在[否则你会得到例外],所以你需要检查使用isset()
或array_key_exists()
)。
放在一起,你会得到以下内容(你显然需要修改它以满足你的需要),假设$ weaponname包含武器名称,$ jsonstring包含json字符串:
$price = NULL;
$jsonarr = json_decode($jsonstring, true);
if (isset($jsonarr[$weaponname]))
{
$price = $jsonarr[$weaponname];
}
如果武器不存在或者数组中的价格为NULL,则$price
变量将为NULL。