2014-01-26 39 views
0

我是json的新手,並決定使用它,因爲它看起來很有前途。語法如何工作?PHP Json編碼語法

這裏是我的簡單的PHP腳本:

$usernames = array('jake', 'john', 'jackie', 'jared'); 
$users = array(); 
for($i = 0; $i < 4; $i++) 
{ 
    $users[$i]['id'] = $i; 
    $users[$i]['name'] = $usernames[i]; 
} 
$data = json_encode($users); 
echo $data; 

它輸出:

{"i":{"id":3,"name":null}} 

我希望它輸出:

[{"id": 1,"name": "jake"},{"id": 2,"name": "john"},{"id": 3,"name": "jackie"},{"id": 4,"name": "jared"}] 
+3

你有一個語法錯誤裏面的'爲'循環。 '我'應該是'$我'。請參閱工作演示:https://eval.in/95092 –

+0

Ahh Thanks!.... – MysteryDev

+1

** Pro tip **:[在調試過程中啓用錯誤報告](http://stackoverflow.com/a/6575502/ ) –

回答

1

內環路只有一條線路會做

$usernames = array('jake', 'john', 'jackie', 'jared'); 
$users = array(); 
for($i = 0; $i < 4; $i++) 
{ 
    $users[] = array("id"=>$i+1,"name"=>$usernames[$i]); 

} 
$data = json_encode($users); 
echo $data; 

輸出,你在你的問題想

[{"id":1,"name":"jake"},{"id":2,"name":"john"},{"id":3,"name":"jackie"},{"id":4,"name":"jared"}] 
1

嘗試使用:

$usernames = array('jake', 'john', 'jackie', 'jared'); 
$users = array(); 
foreach($usernames as $id => $username) 
{ 
    $users[$id]['id'] = $id + 1; 
    $users[$id]['name'] = $username; 
} 
$data = json_encode($users); 
echo $data; 
+0

這會覆蓋$用戶每次迭代,需要'$ users []'或'array_push()',結構仍然有點不正確。 – Scuzzy

+1

檢查更新,請 –

+4

我只是簡單地有'$ users [] = array('id'=> $ id,'name'=> $ username);'幾乎是一樣的事情,只是不會拋出任何機會'$ users [$ id]'通知不存在作爲一個數組的第一個 – Scuzzy

0
$usernames = array('jake', 'john', 'jackie', 'jared'); 
$users = array(); 
for($i = 0; $i < 4; $i++) 
{ 
    $user=array(); 
    $user['id'] = $i; 
    $user['name'] = $usernames[$i]; 
    $users[]=$user; 
} 
$data = json_encode($users); 
echo $data; 

輸出:

[{"id":0,"name":"jake"},{"id":1,"name":"john"},{"id":2,"name":"jackie"},{"id":3,"name":"jared"}] 
0

試試這個,

$usernames = array('jake', 'john', 'jackie', 'jared'); 
$users = array(); 
for($i = 0; $i < 4; $i++) 
{ 
    $users[$i]['id'] = $i; 
    $users[$i]['name'] = $usernames[$i]; 
} 
$data = json_encode($users); 
echo $data; 

改變,

$usernames[i] 

要,

$usernames[$i] 

,我認爲它更好地使用foreach循環,而不是爲..

0
$usernames = array('jake', 'john', 'jackie', 'jared'); 

$users = array(); 

foreach($usernames as $id=>$username{ 
    $id++; 
    $users[]=array('id'=>$id,'name'=>$username); 
} 

$data=json_encode($users);echo $data; 
+0

請給一些解釋,只是代碼。 – lpapp