2017-02-20 36 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'。 –