将数组推入JSON但得到了不需要的结果

时间:2014-02-18 02:03:42

标签: php arrays json

我很擅长格式化,也许我的基础不好。我有一个像这样的json

'first_name'=>'steve', 'msg'=>'something here','profile_id'=>1
我想写一个新项目,我写了

$i = array('first_name'=>'steve', 'msg'=>'something here','profile_id'=>1);
$loginId = array($_GET['login_id']);
array_push($i,$loginId);

echo json_encode($i);

我得到的结果很奇怪:

2 个答案:

答案 0 :(得分:0)

$i = array('first_name'=>'steve', 'msg'=>'something here','profile_id'=>1);
$loginId = $_GET['login_id'];

$i['login_id']=$loginId;    
echo json_encode($i);

array_push不起作用的原因是因为你将$ i视为对象(数组)的数组(集合),而它只是一个键值列表(map)。

如果数组类似于K1 => V1,K2 => V2,请使用$ arr [K3] = V3添加另一对。

如果数组类似于[(k1,v1),(k2,v2)],那么array_push($ arr,(k3,v3));

答案 1 :(得分:0)

你基本上取值$_GET['login_id'],将它放在一个数组中并尝试将其推入一个关联数组中,这样你就得到一个新的数字索引0,它包含一个嵌套数组,转而拥有你的价值。

如果您希望将整个事物统一视为关联数组(或转换为JSON后的对象),那么您应该执行以下操作:

$i = array('first_name'=>'steve', 'msg'=>'something here','profile_id'=>1);
$i['login_id'] = $_GET['login_id'];
echo json_encode($i);