作者junktw (这是唉滴)
看板PHP
标题[请益] php 处理 json array unset 变成 object
时间Sun Feb 28 22:50:29 2016
<?php
$raw_data = '{"status":"ok","data":{"rdata":[{"r1":"1","a1":"3323"},{"r1":"255","a1":"332443"} ]}}';
$json_obj = json_decode($raw_data);
$r_data = '{"r10":"1","a1":"3323"}';
$r_data_obj = json_decode($r_data);
foreach($json_obj->data->rdata as $key=>$tag_name){
if($tag_name->r1 == "1"){
//unset($json_obj->data->rdata[$key]);
}
}
$json_obj->data->rdata[] = $r_data_obj;
print_r($json_obj);
echo json_encode($json_obj);
code好读板
http://pastebin.com/4Kg7hrdJ
json 经过 unset 处理过後就会 json_encode 输出就自动变成 object
可是 print_r 还是 array
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 36.237.55.111
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/PHP/M.1456671032.A.5A7.html
1F:→ ns1234: 第二个参数要加true吧(印象中) 官方文件应该有写 02/28 23:20
2F:→ ns1234: 原来是问encode,我说的是decode...sorry 02/28 23:23
3F:→ ns1234: 我猜是他在php就真的是阵列,只是encode因为是大括号所以 02/28 23:25
4F:→ ns1234: 被当物件 02/28 23:25
5F:→ Kenqr: 假如php array的size是n,index必须是0 ~ n-1,json_encode 02/29 01:31
6F:→ Kenqr: 时才能转成array,否则会转成object。 02/29 01:31
7F:→ Kenqr: 因为json的array index 只能是0 ~ n-1 02/29 01:32
8F:→ Kenqr: 你的rdata的index是1和2,所以没办法转成json array 02/29 01:33
9F:→ junktw: Kenqr 说的正解,我後面用 sort() 也发现是 index 问题 02/29 13:26
10F:推 ns1234: 原来如此,感谢分享 02/29 13:41
11F:→ MOONRAKER: 这是json的一个老陷阱 可以使用array_merge()来解决 03/01 19:31
12F:→ knives: 可以用array_splice 或是array_diff 03/03 17:09