在PHP上没有键的情况下提取JSON的值

时间:2016-05-19 21:06:19

标签: php json

我试图提取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之前给我的名称进行比较。

2 个答案:

答案 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。