本文要解决的问题是将没有索引的php字段转换为json对象(而不是默认的json字段)
php中链表转json的方法是系统自带的方法:json_encode
php中链表转换为json的规则是:当不指定索引时,会转换为json字段,如果指定索引,则会转换为json对象。
那么问题来了,如果需要将没有索引的字段转换成json对象该怎么办,先看这两种情况:
1、不指定索引时:
$val = array("a","b","c","d","e");
转换为json:
[“a”、“b”、“c”、“d”、“e”]
2、有索引时:
$val = array("a"=>"a","b"=>"b","c"=>"c","d"=>"d","e"=>"e") ;
转换为json:
“一个”:“一个”,
“b”:“b”,
“c”:“c”,
“d”:“d”,
“e”:“e”
然后我们回到第一种情况,如果我们想转换为以下没有索引的json对象:
“0”:“一个”php数组转json对象,
“1”:“b”,
“2”:“c”,
“3”:“d”,
“4”:“e”
有人说我们用另一个链表自动指定索引并转换来解决问题:
$arr = 数组();
$val = array("a","b","c","d","e");
为($i=0;$i
$arr[''.$i]=$val[$i];
回显 json_encode($arr);
但实际情况是这样并没有解决问题,输出结果仍然是json字段。
原因是:php中字段的默认索引是数字0~n(取决于字段的宽度)。 不指定索引时,默认为数列索引,自动指定数列索引的效果与不指定索引的效果相同。 因此,即使这样指定索引,也不太好用。
解决办法也很简单,把php默认的索引规则搞乱即可!
我们只需要在 $arr 字段初始化时指定一个索引即可。 这时候PHP就会认为链表的索引已经被用户修改了,不再受系统管理。
上述代码修改为:
$arr = 数组(1=>0);
$val = array("a","b","c","d","e");
为($i=0;$i
$arr[''.$i]=$val[$i];
回显 json_encode($arr);
请注意红色标记的代码。 通过这样的初始化,后续循环中的代码就可以按照我们想象的结果执行了。
php数组的使用远不止这个方法和点,还需要你努力去发现。
ps:仔细研究了php和jsphp数组转json对象,我慢慢意识到,弱类型语言是高级语言,而强类型语言是白痴语言。
发表评论