使用PHP将对象添加到JSON数组

时间:2015-04-06 09:07:02

标签: php json

我正在尝试调用array_push将通过GET请求发送的数据添加到我的json数组中,该数组为我的GCM客户端保存注册ID

<?php

//read current regids

 $myfile = fopen("regids.json", "r") or die("Unable to open file!");
 $current_regids = fread($myfile,filesize("regids.json"));

  // decode json
   $decoded_json= json_decode($current_regids);

     //save to php format array
     $array =  array($decoded_json);

     //close file
     fclose($myfile);

    //get registration id
     $regid = $_GET["regid"];

    //push new reg id into array

     array_push($array,$regid);

     echo json_encode($array);

    ?>

JSON应如下

     ["regid1","regid2", "regid3","regid4"]

然而,当我运行代码时,为了array_push“regid5”它给了我这个

     [["regid1","regid2","regid3","regid4"],"regid5"]

这是一个令人头疼的问题

2 个答案:

答案 0 :(得分:1)

解码时已经有了数组:

// decode json
$decoded_json= json_decode($current_regids);
// now you have an array or object, depending on the input
// in your case it seems to be an array

然后将结果放在另一个数组中:

//save to php format array
$array =  array($decoded_json);

所以现在你有一个嵌套数组。

您需要删除此行/使用$decoded_json作为您要操作的数组:

$array =  array($decoded_json);

答案 1 :(得分:1)

注意: - 如果使用array_push()向数组中添加一个元素,最好使用$array[] = "value",因为这样就不会有调用函数的开销和它比array_push()更快,更安全。