php中json_encode转数组为json字符串时的超奇怪问题。

对比以下两段代码:

$menu[0][0] = "title1";
$menu[0][1] = "bar1";
$menu[0][2] = "bar2";
$menu[1][0] = 'title2';
$menu[2][0] = 'title3';
echo '&$menu='.json_encode($menu).'&';

这个会输出:&$menu=[["title1","bar1","bar2"],["title2"],["title3"]]&

$menu[0]["title"] = "title1";
$menu[0]["bar1"] = "bar1";
$menu[0]["bar2"] = "bar2";
$menu[1][0] = 'title2';
$menu[2][0] = 'title3';
echo '&$menu='.json_encode($menu).'&';

而这个居然输出:&$menu=[{"title":"title1","bar1":"bar1","bar2":"bar2"},["title2"],["title3"]]&

什么意思?问题就在于{}和[],{}是对象,[]是数组!!!!在非php的情况下遍历的时候方法就不一样了!json_encode这个东西太神奇了,神奇起来让人有点郁闷!

4 Responses to php中json_encode转数组为json字符串时... »

  1. 林晨 评论 2008-12-07 20:55

    路过,好专业的技术博客

    回复

  2. joe 评论 2008-12-09 21:01

    :eek: 为什么这么说?

    回复

  3. apeng 评论 2009-02-19 14:45

    那是肯定的啦,很多语言像 js不支持二维数组,也不支持带非数组下标的数组,所以json格式涉及到非数字下标的数组通通会转化成对象,key=>val 形式的。

    PHP一般处理完输出这样的格式,一般都是给ajax访问,然后客户端接收到这样的信息,再用js的 decode(当然js没有自带的这样的函数,要自己写)函数解码出来。形成js的数组和对象。。。。。

    回复

    joe 回复 二月 19th, 2009 at 18:47

    :o hh: 恩

    回复

Leave a Reply

Email address is not published

You should say a Chinese word to pass spam check. If you can not input Chinese, just copy 你好 and paste them into comment text box.