PHP |从URL获取JSON数据并将其放入数组只显示1项?

时间:2017-02-27 15:37:08

标签: php arrays json

我正在尝试从URL中获取一些JSON数据,然后尝试将其放入数组中,然后将其回显到网页。我做错了什么?

$data = json_decode($json, true);

$items = $data["rgDescriptions"];

foreach($items as $item){
    $data2 = [
    'market_hash_name' => $item["market_hash_name"],
    'price' => 0,
    'permission' => 'both_side'
    ];
}

echo json_encode($data2);

4 个答案:

答案 0 :(得分:5)

在你的情况下,$ data2变量被循环覆盖。所以它只会在你的数组中存储最后一条记录。将其声明为数组并将每个记录添加到该数组的键中。

$data = json_decode($json, true);

$items = $data["rgDescriptions"];
$data2 = []; // create empty array.
foreach($items as $item){
    $data2[] = [
        'market_hash_name' => $item["market_hash_name"],
        'price' => 0,
        'permission' => 'both_side'
    ];
}

echo json_encode($data2);

答案 1 :(得分:4)

每次循环通过时,您都会覆盖$ data2变量。 在循环外声明数组,并将每个元素添加到数组的新键中。

--resource

答案 2 :(得分:3)

您在$data = json_decode($json, true); $items = $data; $data2 = []; foreach($items as $item){ $data2[] = [ 'market_hash_name' => $item["market_hash_name"], 'price' => 0, 'permission' => 'both_side' ]; } echo json_encode($data2); 循环

中反复覆盖$data2变量

解决方案: -

foreach()

答案 3 :(得分:2)

你需要告诉php为新数组添加新值:

foreach($items as $item){
    $data2[] = [
        'market_hash_name' => $item["market_hash_name"],
        'price' => 0,
        'permission' => 'both_side'
    ];
}