如何将带非数值键的PHP数组编码为JSON数组?
解决方法:提取数组值再转JSON
这事儿很简单,你只需要先把原数组里的值单独提取出来,再进行JSON编码就可以了。PHP里正好有个专门干这个的函数——array_values(),它会忽略原数组的所有键(不管是字符串还是数字),返回一个纯值的索引数组,这样json_encode()就会把它转成JSON数组而不是对象啦。
具体代码示例:
// 你的原数组 $a = array( "french"=>"bonjour", "italian"=>"buongiorno", "spanish"=>"buenos dias" ); // 提取所有值,得到索引数组 $valueArray = array_values($a); // 编码成JSON数组 echo json_encode($valueArray);
执行这段代码后,输出就是你想要的:
["bonjour","buongiorno","buenos dias"]
原理很直白:array_values()会重新构建一个以连续数字为索引的数组,而JSON规范里,只有数字索引且连续的PHP数组才会被json_encode()转为JSON数组,带字符串键的则会转为JSON对象。
内容的提问来源于stack exchange,提问作者JacopoStanchi
相关产品推荐
相关产品推荐

