2011-05-11 24 views
2

我有一個JSON字符串,我目前的探測如下:PHP - 檢索JSON字符串的第一個元素,無須轉換爲數組

$playedOn = $query -> data -> artist -> services_played_on 

我現在想要得到這個services_played_on的第一個元素,但我不確定如何做到這一點..如果它是一個數組我只是做$查詢[數據] [藝術家] [services_played_on] [0],但由於各種原因,這會弄亂我有其他代碼。任何人有任何想法如何使用->表示法做到這一點?

----- -----編輯

謝謝您的回答,但我需要的是:

$playedOn = $query -> data -> artist -> services_played_on[0] 

(我不能提交此作爲答案,如我是'新'用戶)

+0

只是'$ tmp = json_decode($ query,true); $ TMP [ '數據'] [ '藝術家'] [ 'services_played_on'] [0];未設置($ TMP);'? – KingCrunch 2011-05-11 12:50:54

+0

看到我對@Marcel的迴應 – tiswas 2011-05-11 12:54:53

+0

JSON的外觀如何,您確定'services_played_on'不是已經有數組嗎? – salathe 2011-05-11 12:57:51

回答

7

剛剛decode the JSON第一次。

$jset = json_decode($json, true); 
echo $jset["data"]["artist"]["services_played_on"][0]; 
+0

我想結果是一個JSON字符串,但是,_not_數組.. .. – tiswas 2011-05-11 12:54:36

+0

@tiswas:請參閱我上面的評論。沒有理由先解決它。如果不是的話,你必須與字符串表示交互,這使得所有事情變得無比複雜。 – KingCrunch 2011-05-11 12:59:51

4

我看不到您的問題。如果它是JSON,只需將它反序列化爲PHP,就像@Marcel所說的那樣。

如果你想要結果是JSON,只需將其序列化回來。

例子:

$json = '[ {"a":1} , {"d":3} , {"b":2} ]'; 

$data = json_decode($json); 

$new = json_encode($data[1]); // $new is now '{"d":3}' 

因爲你的問題是相當模糊的,我不知道,如果你想要的結果進行JSON編碼,或者是否要分割字符串自己的路。