PHP怎么输出php json二维数组格式json数据

json_encode();给json数据编码,
json_decode();是json数据变回以前的编码形式
可以利用PHP的数组,包括索引数组,包括关联数组,还有对象,来生成json数据
$usrInfo&=&array('usrname'=&'zhaogou','age'=&29,'sex'=&'male','tel'=&'028');
$jsdata=json_encode($usrInfo);
//如果是索引数组&二维或者一维数组.生成json数据对象属性&就是数组的key
class&jstest{
&&&&public&$name="zhaogou";
&&&&public&$age=21;
&&&&private&$sex='male';
&&&&public&function&say(){
&&&&&&&&&&&&echo&".....";
$jstest&=&new&
$jsclass=json_encode($jstest);
//如果是一个对象,则js数据中不会包含对象中的方法,如果属性是私有的也不能访问到.
接收json数据
function&acceppt(){
&&&&&&&&&&&&&&&&&&&&&&&&var&xhr&=&creatXMLHttpRequest();
&&&&&&&&&&&&&&&&&&&&&&&&xhr.onreadystatechange=function(){
&&&&&&&&&&&&&&&&&&&&&&&&&&&&if(xhr.readyState==4&&&&xhr.status==200){
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&var&linkMessage=xhr.responseT
&&&&&&&&&&&&&&&&&&&&//&&&&document.getElementById('content').innerHTML=linkMessage.dbname+"|"+linkMessage.
&&&&&&&&&&&&&&&&&&&&&&&&eval("var&jsondata&="+linkMessage);
&&&&&&&&&&&&&&&&&&&&document.getElementById('content').innerHTML=jsondata.name+'&br/&'+jsondata.
&&&&&&&&&&&&&&&&&&&&&&&&&&&&}
&&&&&&&&&&&&&&&&&&&&&&&&}
&&&&&&&&&&&&&&&&&&&&&&&&xhr.open('get',"json.php");
&&&&&&&&&&&&&&&&&&&&&&&&xhr.send(null);
&&&&&&&&&&&&}
由于返回的responseText数据是一大窜的字符串,ajax程序无法处理,因此需要将字符串转化为表达式
&&&&&&& 使用eval()函数,将其转化成 var jsondata =xhr.responseT
eval("var&jsondata&="+linkMessage);
使用json的好处:
①节省服务器资源开销
②节省带宽
③按照需求来获得服务器的信息
④请求速度加快
& 开源中国(OSChina.NET) |
开源中国社区(OSChina.net)是工信部
指定的官方社区&&国之画&&&&&&
&& &&&&&&&&&&&&&&&&&&
鲁ICP备号-4
打开技术之扣,分享程序人生!求解--js 接受php json_encode输出的数组变成对象,不太明白
查看完整版本: [--
求解--js 接受php json_encode输出的数组变成对象,不太明白
有个二维数组,直接用php json_encode输出的是json格式的,但是用php echo &&script&&.json_encode($moveData).&;&/script&&;这样js接受到的是下面的对象[attachment=40314],怎么不是json格式呢?自己在js里面用eval(数组)就可以转换成json格式,就是不太明白php输出和js接受后的格式就变了,本人对json不熟,所以想知道这个事正常情况吗?想问下有没有直接就可以让js接受到json的格式的方法?
的json_encode返回的只是一个字符串,不能直接在JS里面去用,你可以使用JS定义变量的方式来代替eval,因为eval存在安全风险,能不用就尽量不要用。JSON其实很简单,你可以把它看作是JS的对象定义,如{&name&:&zhangsan&},转成PHP数组就是 array(&name&=&&zhangsan&),详情可以参考,手册是PHP的根本。对于你的问题,举例说明。&?php&&&&$users = array(&&&&&&&&'first'=&array(&&&&&&&&&&&&'name'=&'zhangsan',&&&&&&&&&&&&'sex'=&'male'&&&&&&&&),&&&&&&&&'second'=&array(&&&&&&&&&&&&'name'=&'lisi',&&&&&&&&&&&&'sex'=&'female'&&&&&&&&)&&&&);&&&&if($json&&= json_encode($users)){&&&&&&&&echo '&script&var users='.$json.';&/script&'.PHP_EOL;&&&&&&&&echo '&script&alert(users.first.name)&/script&';&&&&}?&
就是想echo '&script&alert(json_encode($users))&/script&';这样得到的是那个json_encode返回的字符串,这样有没有可能呢?
:PHP的json_encode返回的只是一个字符串,不能直接在JS里面去用,你可以使用JS定义变量的方式来代替eval,因为eval存在安全风险,能不用就尽量不要用。JSON其实很简单,你可以把它看作是JS的对象定义,如{&name&:&zhangsan&},转成PHP数组就是 array(&na .. ( 02:31) 就是想echo '&script&alert(json_encode($users))&/script&';这样得到的是那个json_encode返回的字符串,这样有没有可能呢?
你想返回字符串,那就在外层加一对引号就可以了。看代码: &?php&&&&$users = array(&&&&&&&&'first'=&array(&&&&&&&&&&&&'name'=&'zhangsan',&&&&&&&&&&&&'sex'=&'male'&&&&&&&&),&&&&&&&&'second'=&array(&&&&&&&&&&&&'name'=&'lisi',&&&&&&&&&&&&'sex'=&'female'&&&&&&&&)&&&&);&&&&if($json&&= json_encode($users)){&&&&&&&&echo '&script&';&&&&&&&&echo 'alert(\''.$json.'\');'; // \'是JS定义字符串的引号,外层的'是PHP定义字符串的引号&&&&&&&&echo &alert('{$json}');&; //这种写法更方便你理解,为了效率考虑,不推荐外层使用双引号。&&&&&&&&echo '&/script&';&&&&}?&
原图原图原图图呀
饭桶饭桶饭桶饭桶饭桶
时代发生的发生的发多少
查看完整版本: [--
Gzip disabledphp生成json数据为乱码的几种处理方法
作者:admin&&&&时间: 14:32:41&&&&浏览:
在jquery的使用中,json的数据往往是从后台取出来,然而,由服务器端生成的json数据,在前端调用时有时会遇到一些问题,而出现乱码则属于较为常见的现象。本文将通过实例与大家分享一下php生成json数据为乱码的处理方法。php生成json数据的例子,非常多,这里不再介绍,本文要介绍的是对于php生成json数据为乱码的处理方法。php生成json数据为乱码的处理方法一先看看下面这段由php生成的json字符串:{&total&:239,&list&:[{&code&:&001&,&name&:&\u4e2d\u56fd&,&addr&:&Address 11&,&col4&:&col4 data&},{&code&:&002&,&name&:&Name 2&,&addr&:&Address 12&,&col4&:&col4 data&}]}&\u4e2d\u56fd&就是一段乱码,我们现在的目标是把这段乱码变成可读字符串。通过测试,可以采用这样的方法解决问题:在php生成json的程序中,在json_encode之前,把所有数组内所有内容都用urlencode()处理一下,然用json_encode()转换成json字符串,最后再用urldecode()将编码过的中文转回来。下面为两个处理函数,可以直接调用:/************************************************************** &* &*& 将数组转换为JSON字符串(兼容中文) &*& @param& array&& $array&&&&& 要转换的数组 &*& @return string&&&&& 转换得到的json字符串 &*& @access public &* &*************************************************************/function JSON($array) { &&& arrayRecursive($array, 'urlencode', true); &&& $json = json_encode($array); &&& return urldecode($json); } /************************************************************** &* &*& 使用特定function对数组中所有元素做处理 &*& @param& string& &$array&&&& 要处理的字符串 &*& @param& string& $function&& 要执行的函数 &*& @return boolean $apply_to_keys_also&&&& 是否也应用到key上 &*& @access public &* &*************************************************************/function arrayRecursive(&$array, $function, $apply_to_keys_also = false){ &&& static $recursive_counter = 0; &&& if (++$recursive_counter & 1000) { &&&&&&& die('possible deep recursion attack'); &&& } &&& foreach ($array as $key =& $value) { &&&&&&& if (is_array($value)) { &&&&&&&&&&& arrayRecursive($array[$key], $function, $apply_to_keys_also); &&&&&&& } else { &&&&&&&&&&& $array[$key] = $function($value); &&&&&&& }&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& if ($apply_to_keys_also && is_string($key)) { &&&&&&&&&&& $new_key = $function($key); &&&&&&&&&&& if ($new_key != $key) { &&&&&&&&&&&&&&& $array[$new_key] = $array[$key]; &&&&&&&&&&&&&&& unset($array[$key]); &&&&&&&&&&& } &&&&&&& } &&& } &&& $recursive_counter--; }&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& echo JSON($jarr);通过这样处理后,&\u4e2d\u56fd&这段乱码就会变成了&中国&的可读字符了。php实现的另外一种解决方法该方法跟上面的方法类似,也是先urlencode (),再urldecode()来处理。参考如下实例&meta http-equiv=&Content-Type& content=&text/ charset=UTF-8& /&&?php//建立数据库连接//$con = mysql_connect ( &localhost&, &name&, &yourpwd& );if (! $con) {&&& die ( 'Could not connect: ' . mysql_error () );}//选择查询的数据库mysql_select_db ( &china_city&, $con );//设置字符集为UTF-8mysql_query ( &set names utf8& );$query = &select * from provincial&;//执行SQL语句$result = mysql_query ( $query );//循环 将查询的数据存入数组while ( $row = mysql_fetch_assoc ( $result ) ) {&&& $response [] = $}//使用Foreach遍历数组 同时使用urlencode处理 含有中文的字段foreach ( $response as $key =& $value ) {&&& $newData[$key] = $&&& $newData [$key] ['Provincial'] = urlencode ( $value ['Provincial'] );}echo urldecode ( json_encode ( $newData ) );mysql_close ( $con );?&在客户端处理json乱码的方法有人认为,json_encode()输出的是标准的json对象,那个不叫乱码。我觉得也有道理,处理这种编码应该可以在客户端实现,而不需要在服务器处理。如下便是在客户端的处理方法。如果是ajax,直接echo json_encode($response); //这里输出的中文是乱码在客户端,$.post('url.php', {'data': 'mydata'}, function(data){data = eval('(' + data +')');alert(data[0].Provincial);})弹出的不会是乱码的。如果觉得eval函数不安全,可以使用$.getJSON( );,如果选择了jquery库的话。还有,使用这种方法要注意的一点是,如果数据源还有特殊符号,比如&,\\,客户端使用eval解析会出现问题。
相关意见echo json_encode($var); 输出的是标准的json字符串,中文本来就是被转换过的,不是什么乱码。如果项目编码不是utf8,直接使用json_encode转换出来的中文会变成NULL的,urlencode后就不存在这个问题了。生成json字符串的时候只能使用utf-8。不过可以用下面这个函数先实现utf8数组转码然后在直接使用json_encode():function output($arr = array()) {&&& return eval('return ' . iconv('GB2312', 'UTF-8', var_export($arr, true)) . ';');}如果客户端是用js写,确实没什么必要在php服务器端处理字符串问题。但是我最近在用java的intent链接一个php的url返回数据,一直是转化后的编码,java客户端也没找到解决办法,这时在服务器端的处理方法就很管用。
把文章分享到:
QQ交流群()PHP查询数据库表,如何生成二维JSON_百度知道
PHP查询数据库表,如何生成二维JSON
  mysql查询某个数据库下所有表名的sql语句:SELECT&TABLE_NAME&FROM&INFORMATION_SCHEMA.TABLES&WHERE&TABLE_SCHEMA&=&'数据库名称'  具体生成示例如下:&?php//连接数据库$con&=&mysql_connect(&localhost&,&root&,&&);if&(!$con){&&&&die('Could&not&connect:&'&.&mysql_error());}//选择要操作的数据库mysql_select_db(&activity&);//sql语句$sql=&SELECT&TABLE_NAME&FROM&INFORMATION_SCHEMA.TABLES&WHERE&TABLE_SCHEMA&=&'activity'&;//执行sql$result=mysql_query($sql);$arr=array();$i=0;while($row=mysql_fetch_row($result)){&&&&$arr[$i]&=&$row[0];&&&&$i++;}//将结果转换为json格式$json=json_encode($arr);//输出结果print_r($json);//关闭mysql数据库连接mysql_close($con);?&生成结果:
其他类似问题
为您推荐:
提问者采纳
substr($你的json字符串&)))):你的数组是$json&,数据的源头就是数组;;$json&那么你要生成json结构&nbsp,那么你大可使用“json_encode”函数就可以生成你想要的json结构,如果这个json字符串的结构是按照你想象的生成;=&,0;;json_encode($json)就能生成,&]}&quot,(strlen($json)-strlen(strrchr($json.&quot,&//但是我觉得你弄复杂了,例;只需要&nbsp?php//方法很多&&quot?&;=&nbsp,利用截取是其中一种$json&nbsp
主要是 如何把搜索出来的数据变成那数组那部分比较困难。
我反倒觉得这个是最简单的。不妨给看看你的语句。难怪你没法弄成简单json结构,你只读出一行肯定不行了:以下帮你实现,有疑问再问&?phprequire_once(dirname(__FILE__).'/data/config.php');require_once(dirname(__FILE__).'/includes/init.php');$sql_color_list&=&&select&*&from&&.$&&&&&&&&&&&&&&&&&&$result&=&mysql_query($sql_color_list,$con);$rows&=&array();//多行数据while&($row=mysql_fetch_array($result))&{&&&&$rows[]&=&$&}if($rows)echo&json_encode(array('color'&=&&$rows));elseecho&&暂无数据&;?&
亲顺便问一下,使用jQuery.each(object, [callback])
怎么交互呢?例如:A页面 点击后 提交 1个参数
到B 页面, 就查询 color 这个表(代码如你上提供的)。 A页面需要怎么写呢?
提问者评价
=&{&nbsp,&$rows));&Array});($row&color'=&你就会得到一个json串扔到js里就是一个对象了&&json_encode(array('&&=&&$rows[]&补充while&&&mysql_fetch_array($MYSQL_ASSOC))&nbspjson_encode({PHP&}echo&row
json_encode(array('color' =& $rows));
//请问这里的作用是什么呢?
来自团队:
其他1条回答
输出$output = array(' =&gt, 需要用循环;colors&#39,所以,), MYSQL_ASSOC)) {
$rows[] = &$row:mysql_fetch_arraymysql_fetch_array() 只返回一行结果; &$rows。$rows = array()while ($row = mysql_fetch_array($result问题一;echo json_encode($output);}问题二, 要获取所有的结果集
您可能关注的推广
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁}

我要回帖

更多关于 php 二维数组 json 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信