我正在尝试将静态数据与json编码数组数据合并以进行输出。这是我的PHP代码:
$arr = array();
$rs = mysql_query("SELECT id, name, picture, mail, gender, birthday FROM users WHERE id='$logged_id' ");
while($obj = mysql_fetch_object($rs)) {
$arr[] = $obj;
}
echo '{"users":'.json_encode($arr).'}';
现在我想与其他数据合并:
$user_ip = array("user_ip" => $user_ip_address);
我尝试过array_merge($ arr,$ user_ip)。但它没有用。如果我与现有的数据数组合并,我认为这不是正确的json数组格式。请告诉我如何使用json编码输出其他数据以及来自mysql的当前数据。
我使用现有代码获得此类输出,这是正确的:
{"用户":[{" ID":" 14""名称":"鲜于罗伊""图像":" image012.jpg""邮件":" myemail@gmail.com",&#34 ;性别":"男性""生日":" 1983年1月11日"}]}
但现在我想添加其他变量,例如$ user_ip_address作为用户的数据加入当前输出数据,如下所示:
{"用户":[{" ID":" 14""名称":"鲜于罗伊""图像":" image012.jpg""邮件":" myemail@gmail.com",&#34 ;性别":"男性""生日":" 1983年1月11日",user_ip:" 127.0.0.1" }]}。
我想以这种方式得到它。怎么做?请告诉我。提前谢谢。
答案 0 :(得分:0)
试试这个:
echo json_encode(array('users' => $arr, 'user_ip' => $user_ip_address));
旁注: 您应该使用PHP PDO类来连接和查询数据库。
答案 1 :(得分:0)
mysql_fetch_object
返回一个对象,而不是一个数组。那么,$arr[] = $obj;
你在做什么只是将一个对象添加到一个数组中。因此,$arr
的实际结构类似于
$arr => [
[0] => Object(....),
[1] => Object(....),
....
]
在您的特定情况下,我假设您通过主键获取单行,因此只有一个对象。
解决此问题的最简单方法是向对象添加字段。自5.3以来我没有使用PHP,所以不能确定,但它就像添加
一样简单$obj->user_ip = $user_ip_address;
在循环中。
顺便说一下,有几个问题要问你:
mysql_fetch_object
和array_merge
的文档?为什么不(因为如果你已经读过它,你就不会问这个问题。)echo
?