2015-06-13 5 views
0

PHP noob здесь. Я создаю приложение для iPhone, которое отправляет капли JSON на веб-сервер. На стороне сервера я получаю JSON и пытаюсь получить доступ к 3 полям, которые содержит этот объект.Доступ к элементам JSON в PHP

Две странные вещи происходят со мной, что я не мог понять, как это исправить:

  1. Я не получаю ничего назад при печати из декодированного объекта ($ post_data ниже).
  2. Я действительно могу напечатать полный объект обратно в Xcode при печати объекта без декодирования ($ content ниже), но понятия не имею, как получить доступ к различным полям в объекте.

Мой код PHP:

$con = mysql_connect("127.0.0.1","root", "") or die('Could not connect: ' . mysql_error()); 
$content = file_get_contents('php://input'); 
$post_data = json_decode($content , true); 
echo $content; --> prints the object properly 
echo $post_data; --> does not print anything 
echo $content->lat; --> does not print anything 

Мой JSON объект:

{ 
    "lat" : 37.33233141, 
    "long" : -122.0312186, 
    "speed" : 0 
} 

Любая помощь будет принята с благодарностью.

+0

возможно дубликат [PHP JSon возврата \ _decode пустой массив] (http://stackoverflow.com/questions/24848625/php-json-decode-return-empty-array) –

ответ

1

Это потому, что json_decode($content, true) возвращает массив, который вызывает проблемы при отображении эхо-контейнера.

Try делает echo $post_data['lat'];

вы также можете попробовать использовать print_r($post_data);, чтобы его выход фактическое содержимое переменной, так что вы можете увидеть, если что-то не работает должным образом

+0

Ничего себе, спасибо! Я пробовал буквально каждый вариант, но это работает! Не могли бы вы ответить на следующий вопрос? Могу ли я использовать '$ post_data [' lat ']', как если бы я хотел сохранить этот параметр в базе данных? Благодаря!! – moshikafya

+0

определенно. Поскольку использование '$ post_data ['lat']' существенно заменит эту переменную на ее содержимое. Таким образом, вы можете делать что-то вроде '' UPDATE TABLE current_location SET lat = '". $ Post_data [' lat ']."', Long = '". $ Post_data [' long ']."' WHERE current_user = '". $ user_id. "LIMIT 1"; ' –

Смежные вопросы