2012-03-09 58 views
1

我想通过json对象输出用户,但是当我尝试输出他们的歌曲列表时,它只输出最后一个。我想把这个列表放入一个数组中。PHP json_encode将不会输出正确的结果

这是我阵推,同时通过用户循环,

array_push($arrayUsers, array(
       'username' => $user['username'], 
       'id' => $user['_id'], 
       'favSongs' => array(
        'title' =>'song1', 
        'title' =>'song2' 
        ) 
       ) 
     ); 

,但是这是我回来后(缺少歌名),

[{"username":"asdfasdfasd","id":{"$id":"4f58d7227edae19c02000000"},"songs":{"title":"song2"}}] 

我希望它输出的歌曲像这样,但很困惑怎么把它做到这一点使用PHP:

"songs":[{"title": "song1"}, {"title": "song2"}] 
+1

'阵列(“标题” =>“松1”,“标题” =>“song2”)'不是有效的阵列 - 或者更确切地说,它是有效的,但你不能有两个相同的密钥,而不总是覆盖一个。 – 2012-03-09 19:58:53

+0

相反,只需使用普通的数字数组作为那些''favSongs'=>数组('song1','song2')' – 2012-03-09 19:59:33

+1

ohhh我明白了!谢谢我试过这个,它工作'array_push($ arrayUsers,array('username'=> $ user ['username'],'id'=> $ user ['_ id'],'favSongs'=> array(array 'title'=>'song1'),array('title'=>'song3'))));' – jamcoupe 2012-03-09 20:01:09

回答

3
'favSongs' => array(
    'title' => 'song1', 
    'title' => 'song2' 
) 

PHP将用最后一个声明替换'title'键。

"songs":[{"title": "song1"}, {"title": "song2"}] 

这是一个对象数组,因此在PHP中它需要是一个数组数组。

'favSongs' => array(
    array('title' => 'song1'), 
    array('title' => 'song2') 
)