2013-09-18 2 views
0

я пытаюсь читать JSON с помощью PHPчтения JSON, как facebook JSon PHP

{ 
    "data": [ 
    { 
     "id": "3043252fsdgdf36360354", 
     "name": "name1", 
     "access_token": "CAAIf3VEtVSoBAHrVxHL16zt4H5OvwBmdfgs4F3auPE0NZBx5PmIujBAdqw0Cv4bZACXytT1O1y6FHEZA25E1aqQZD" 
    }, 
    { 
     "id": "3326848fdgsdfgsdf03424168", 
     "name": "name2", 
     "access_token": "CAAIf3VEtVSoBAJinePVdfgsdfgMxuY3zaj9AimaoKx7VIO9jCqZCHC6ZBixL1n6ZC72LTMn0ZB4T8rOHD27WmzbBVgvUwgspeEZD" 
    }} 

я стараюсь этим кодом

$sfgsdfg= $json_a=json_decode($read,true); 


echo $json_a['data'][3043252fsdgdf36360354]; 
echo $json_a['3043252fsdgdf36360354'][access_token]; 

не работает с этим PHP кода я нужна помощь, чтобы прочитать его

Мне нужно выбрать access_token по 3043252fsdgdf36360354 как echo $ json_a ['data'] [3043252fsdgdf36360354] ['access_token'];

Мне нужно только читать по id как. mysql. выберите access_token, где id = '3326848fdgsdfgsdf03424168';

+0

мне нужно выбрать access_token по 3043252fsdgdf36360354, как эхо $ json_a [ 'данных'] [3043252fsdgdf36360354] [ 'access_token']; –

+0

access_token по id –

ответ

1

Прежде всего, ваш JSON не хватает ] характер и заставит json_decode вернуть NULL. Сначала вы должны исправить строку JSON. Вы можете использовать онлайн-сервис, например jsonlint.com, для проверки JSON. После того как вы расшифровали строку JSON в качестве ассоциативного массива, вы можете просто пропустить массив и проверить, содержит ли он данный идентификатор. Если это так, вы можете легко получить соответствующий токен доступа.

Я сделал это в короткой функции. Вы можете использовать это, чтобы получить маркер доступа по ID:

$jsonArray = json_decode($str, TRUE); 
function getAccessTokenFromID($id, $jsonArray) { 
    foreach ($jsonArray['data'] as $k => $elem) { 
     if($elem['id'] == $id) { 
      $access_token = $elem['access_token']; 
     } 
    } 
    return $access_token; 
} 

Использование:

$myid = '3043252fsdgdf36360354'; 
$my_accesstoken = getAccessTokenFromID($myid, $jsonArray); 

Demo!

+0

echo getAccessTokenFromID (3043252fsdgdf36360354); не работа ?? –

+0

@Michaeltawfeak: См. Рабочую демонстрацию. –

+0

большое спасибо, спасибо очень mush –

0

Не хорошо сформирован json. Попробуйте с:

{ 
    "data": [ 
    { 
     "id": "3043252fsdgdf36360354", 
     "name": "name1", 
     "access_token": "CAAIf3VEtVSoBAHrVxHL16zt4H5OvwBmdfgs4F3auPE0NZBx5PmIujBAdqw0Cv4bZACXytT1O1y6FHEZA25E1aqQZD" 
    }, 
    { 
     "id": "3326848fdgsdfgsdf03424168", 
     "name": "name2", 
     "access_token": "CAAIf3VEtVSoBAJinePVdfgsdfgMxuY3zaj9AimaoKx7VIO9jCqZCHC6ZBixL1n6ZC72LTMn0ZB4T8rOHD27WmzbBVgvUwgspeEZD" 
    } 
    ] 
} 

и РНР:

$val = json_decode($read, TRUE); 
echo $val['data'][0]['id']; 

ОБНОВЛЕНО:

function find_by_id($id, $val) { 
    foreach($val['data'] as $key => $obj) { 
    if ($obj['id'] === $id) 
     return $obj['access_token']; 
    } 
} 
+0

Мне нужно выбрать access_token по 3326848fdgsdfgsdf03424168 как echo $ val ['data'] [0] ['3326848fdgsdfgsdf03424168']; –

+0

Я сохраню идентификаторы и вам нужно будет выбрать пользовательский токен страниц и сохранить его для каждой страницы. –

+0

Вы хотите функцию, которая возвращает массив, у которого есть id id, который вы указали? –