2017-02-20 77 views
0

我可以從JSON響應中提取用戶ID,我從電報bot響應中獲取響應,但無法解壓縮file_id。 這裏是我的代碼:我該如何提取我的JSON響應的這部分

<?php 
$response='{"ok":true,"result":[{"update_id":514191839,"message":{"message_id":898,"from":{"id":100000000,"first_name":"Nnn","username":"myid"},"chat":{"id":101150186,"first_name":"Nnn","username":"myid","type":"private"},"date":1487570256,"photo":[{"file_id":"AgADBAAD4KcxG9qfWFEqGZHRzv1IReOGnhkABOym5qINB41gwLIBAAEC","file_size":480,"width":90,"height":44},{"file_id":"AgADBAAD4KcxG9qfWFEqGZHRzv1IReOGnhkABCkXQqPZCWHswbIBAAEC","file_size":2694,"width":273,"height":132}]}}]}'; 
$arrayUpdate= json_decode($response, true); 
foreach ($arrayUpdate['result'] as $key) { 

       echo "user id is:".$key['message']['from']['id']."<br />"; 
       echo "photo file id is:".$key['photo']['file_id']; 

} 
?> 
+1

什麼的print_r($鍵); ? – Naga

+0

@naga對不起,我不明白你的意思? –

回答

2

photo是元件的陣列。因此,舉例來說,如果要提取的第一個,你應該使用:

echo "photo file id is:".$key['message']['photo'][0]['file_id']; 
+0

照片是一個消息的子陣列,所以它不會工作@Matteo鋼琴 – Nawin

+0

@Nawin哎呀,你是對的 –

+0

@Matteo鋼琴太棒了!謝謝它的作品。 –

1
foreach ($arrayUpdate['result'] as $key) { 

    echo "user id is:" . $key['message']['from']['id'] . "<br />"; 
    foreach ($key['message']['photo'] as $photo) { 
     echo "photo file id is:" . $photo['file_id'] . "<br />"; 
    } 
} 
+0

This works too,thanks,(but return photo id 2 times) –

+0

因爲你在照片中有兩個file_id,在foreach之前檢查一下'print_r($ arrayUpdate);' – Nawin

1

試試這個:

<?php 
    $response='{"ok":true,"result":[{"update_id":514191839,"message":{"message_id":898,"from":{"id":100000000,"first_name":"Nnn","username":"myid"},"chat":{"id":101150186,"first_name":"Nnn","username":"myid","type":"private"},"date":1487570256,"photo":[{"file_id":"AgADBAAD4KcxG9qfWFEqGZHRzv1IReOGnhkABOym5qINB41gwLIBAAEC","file_size":480,"width":90,"height":44},{"file_id":"AgADBAAD4KcxG9qfWFEqGZHRzv1IReOGnhkABCkXQqPZCWHswbIBAAEC","file_size":2694,"width":273,"height":132}]}}]}'; 
$arrayUpdate= json_decode($response, true); 
foreach ($arrayUpdate['result'] as $key) { 

       echo "user id is:".$key['message']['from']['id']."<br />"; 
       foreach ($key['message']['photo'] as $photo) { 
       echo "photo file id is:".$photo['file_id']; 
       } 

} 
?> 
+0

謝謝,但是第一個更小 –

+0

是的,我同意但是在那裏他用'[0]'對索引進行硬編碼。在我的代碼中它是動態的。所以,如果數組中的對象更多,它會自動處理所有'file_id'。 –