在 PHP 中访问 JSON 元素
Posted
技术标签:
【中文标题】在 PHP 中访问 JSON 元素【英文标题】:Accessing JSON elements in PHP 【发布时间】:2015-06-13 21:53:32 【问题描述】:php 菜鸟在这里。我正在构建一个将 JSON blob 发送到 Web 服务器的 iPhone 应用程序。在服务器端,我正在接收 JSON 并尝试访问对象包含的 3 个字段。
有两件奇怪的事情发生在我身上,我不知道如何解决:
-
打印解码后的对象(下面的 $post_data)时,我没有得到任何返回。
我实际上可以在不解码的情况下打印对象时在 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
任何帮助将不胜感激。
【问题讨论】:
PHP json_decode return empty array 的可能重复项 【参考方案1】:这是因为json_decode($content, true)
正在返回一个数组,如果您回显该容器,则会出现显示问题。
试试echo $post_data['lat'];
您也可以尝试使用print_r($post_data);
让它输出变量的实际内容,这样您就可以查看是否有某些东西无法正常工作
【讨论】:
哇,非常感谢!我几乎尝试了每一个选项,但这是有效的!你介意一个后续问题吗?如果我想将此参数存储在数据库中,我可以按原样使用 '$post_data['lat']' 吗?谢谢!! 肯定的。因为使用$post_data['lat']
本质上将用它的内容替换变量。所以你可以做类似"UPDATE TABLE current_location SET lat = '".$post_data['lat']."', long = '".$post_data['long']."' WHERE current_user = '".$user_id."' LIMIT 1";
以上是关于在 PHP 中访问 JSON 元素的主要内容,如果未能解决你的问题,请参考以下文章
在 PHP 中访问 JSON 数组并发送到 MySQL SELECT