对比以下两段代码:
$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这个东西太神奇了,神奇起来让人有点郁闷!
路过,好专业的技术博客
回复
回复
那是肯定的啦,很多语言像 js不支持二维数组,也不支持带非数组下标的数组,所以json格式涉及到非数字下标的数组通通会转化成对象,key=>val 形式的。
PHP一般处理完输出这样的格式,一般都是给ajax访问,然后客户端接收到这样的信息,再用js的 decode(当然js没有自带的这样的函数,要自己写)函数解码出来。形成js的数组和对象。。。。。
回复
回复