热搜:NVER node 开发 php

关于json_encode的数组转json问题

2024-09-11 17:50:01
关于json_encode的数组转json问题

我要把一个数组转为json 
数组本来输出是这样

print_r($arrary);//输出结果:Array ([0] => upload/2013/05/09/14303.jpeg [1] => upload/2013/05/09/14300.jpeg [2] => upload/2013/05/09/148.jpeg [3] => upload/2013/05/09/187.jpeg [4] => upload/2013/05/09/14296.jpeg [5] => upload/2013/05/09/203.jpeg ) $jarr=json_encode($arrary);//把数组转为jsonprint_r($jarr);//输出结果:["upload\/2013\/05\/09\/14303.jpeg","upload\/2013\/05\/09\/14300.jpeg","upload\/2013\/05\/09\/148.jpeg","upload\/2013\/05\/09\/187.jpeg","upload\/2013\/05\/09\/14296.jpeg","upload\/2013\/05\/09\/203.jpeg"]

这是怎么回事,json为什么没有键?不是应该是"0":upload/2013/05/09/14303.jpeg 这样的吗?而且原本数组中存的url中多了许多"\" 原来只有"/"的,这是怎么回事?


回复讨论(解决方案)

json数据格式就是这样的,js里调用是没有问题的。

json数据格式就是这样的,js里调用是没有问题的。
但是我看网上的教程不都是"0":upload/2013/05/09/14303.jpeg这样的吗? 而且这个“\”出现是什么原因?


json数据格式就是这样的,js里调用是没有问题的。
但是我看网上的教程不都是"0":upload/2013/05/09/14303.jpeg这样的吗? 而且这个“\”出现是什么原因?

反斜杠\是转义字符的

要是有中文会转码  先  urlencode 再 urldecode就没有 \  中文也行

虽然没有键名,不过不是有,吗
JS的数组的写法和PHP的还是有一定区别的,不是键名=》键值,而是用,隔开
var ar=["upload\/2013\/05\/09\/14303.jpeg","upload\/2013\/05\/09\/14300.jpeg","upload\/2013\/05\/09\/148.jpeg","upload\/2013\/05\/09\/187.jpeg","upload\/2013\/05\/09\/14296.jpeg","upload\/2013\/05\/09\/203.jpeg"];
这里面的ar[0]就是 upload/2013/05/09/14303.jpeg 

\是为了转义/用的,不止是/还有*()等符号在你输出的时候前面都会被加上\,因为它们比较特殊

如果键名是数字,会自动隐藏掉