【发布时间】:2016-03-06 13:32:09
【问题描述】:
我正在为 Android 应用创建自己的 API,但我似乎无法解决这个问题。 (注意这是我的第一个 php 项目)。
我想要实现的是向关联数组添加一个元素,然后将其编码为 JSON,但我唯一实现的是每次循环重复时对 JSON 进行编码,从而导致格式错误的 JSON。
这是带有循环的函数
function checkLike($media_id, $user1_id, $access_token){
$url = 'https://api.instagram.com/v1/media/'.$media_id.'/likes?access_token='.$access_token;
$json1 = file_get_contents($url);
$arr1 = json_decode($json1);
$arr = array('media_id' => $media_id, 'hasLiked' => 0);
if(is_array($arr1->data)){
foreach ($arr1->data as $key => $value) {
//echo 'Comprobando el id '.$value->id.' deberia ser '. $user1_id.' ';
if($value->id === $user1_id){
$arr = array('media_id' => $media_id, 'hasLiked' => 1);
}else{
echo 'nope';
}
}encode_json($arr);
}else{
echo 'false1';
}
}
这是另一个调用它的循环
$json = file_get_contents('https://api.instagram.com/v1/users/self/media/recent/?access_token='.$token.'&count=5');
$arr = json_decode($json);
if (is_array($arr->data)) {
foreach ($arr->data as $key => $value) {
checkLike($value->id, get_user_id($user, $token), $token);
}
}
但是,我得到的 JSON 如下:
{"media_id":"1198059901794013237_483636171","hasLiked":0}
{"media_id":"1196611512178987610_483636171","hasLiked":1}
{"media_id":"1195162888588906891_483636171","hasLiked":1}
{"media_id":"1193726158308528216_483636171","hasLiked":1}
{"media_id":"1192260158916546943_483636171","hasLiked":1}
我该怎么做才能得到这样的东西?
{
"photos":[
{
"mediaID":"1198059901794013237_483636171",
"hasLiked":0
}, {
"mediaID":"1196611512178987610_483636171",
"hasLiked":1
}
]
}
【问题讨论】:
-
$arr = array("photos"=>array('media_id' = $media_id, 'hasLiked' => 1)); -
或者循环外..
encode_json(array("photos"=>$arr)); -
我认为 encode_json 在这里是错字
-
@devpro 嘿,感谢您的回答,但由于有 2 个循环,第一个是一个函数,我不能调用 encode_json (我自己的函数只做 echo(json_encode($foo) ,它不是错字哈哈)在 $arr 上,因为它是在函数内部声明的变量。我不知道我是否解释正确。
-
你在需要照片的地方使用索引
标签: php json api instagram instagram-api