2014-01-20 18 views
0

您好我最近遇到了json_encode函數的例子。很迷茫約1部分:PHP中的json_encode方法

<?php 

$runners=array{ 

'fname'=>5 
'you' => 6 
}; 

echo json_encode (array("runners"=>$runners)); 

?> 

的問題是,爲什麼不能在最後一行的代碼僅僅是:

echo json_encode ($runners); 

感謝,

+0

這取決於你想如何來代表它。你準確期待哪種數據結構? – BlitZ

+0

問題是你的數組聲明不正確,你正在使用{..}而不是(..) – harishkumar329

回答

0

首先你的數組是wrogly使用的。它將使用小括號()而不是捲曲{}。所以,你的陣列將變爲:

$runners=array(
    'fname' => 5, 
    'you' => 6 
); 

現在,當你這樣做json_encode()爲:echo json_encode ($runners);你會得到輸出:

{"fname":5,"you":6} 

如果你這樣做:echo json_encode (array("runners"=>$runners));你會得到輸出:

{"runners":{"fname":5,"you":6}} 
+0

這個答案似乎解決了*實際問題,而不僅僅是關於語法錯誤的評論。 – GolezTrol

4

首先,你array declaration是不正確如果你運行代碼,你會得到一個語法錯誤。您應該使用array(...)而不是array{...}。這些值需要用逗號分隔。例如:

array(
    key => value, 
    key2 => value2, 
    key3 => value3, 
    ... 
) 

下面應該工作:

$runners = array(
    'fname' => 5, 
    'you' => 6 
); 

echo json_encode($runners); 

輸出:

{"fname":5,"you":6} 

如何是這兩種不同的

最終的結果是兩種情況不同。當你做json_encode(array("runners"=>$runners));,數組是多維的,和JSON輸出會發生變化,也:

{"runners":{"fname":5,"you":6}} 

哪一個你應該使用

依賴。在第一個數組中,只需創建名爲fnameyou的兩個鍵,並在第二個中添加另一個鍵runners,從而使該數組具有多維性。如果您希望這些信息出現在生成的JSON字符串中,則應該使用第二個。如果不是,請使用第一個。

+0

是的,但我不認爲這個問題是關於這個語法錯誤的。 – GolezTrol

+0

@GolezTrol:我已經更新了答案:) –

1

首先,您在數組中使用{這是不正確的。並且在數組元素之間沒有,
你可以同時使用。但你必須通過不同的方式訪問2 json。取決於您的選擇。 (最好選擇)你有一維數組。

$runners=array(

    'fname'=>5, 
    'you' => 6 
    ); 
    echo json_encode ($runners); 

OUTPUT:

{"fname":5,"you":6} 

在第二你有2D陣列。

 $runners=array(

    'fname'=>5, 
    'you' => 6 
    ); 


    echo json_encode (array("runners"=>$runners)); 

OUTPUT:

{"runners":{"fname":5,"you":6}} 

現場演示:https://eval.in/92104