我有这个PHP数组:
$a = array(
"french"=>"bonjour",
"italian"=>"buongiorno",
"spanish"=>"buenos dias"
);
但当我echo json_encode($a);
时,我得到:
{
"french": "bonjour",
"italian": "buongiorno",
"spanish": "buenos dias"
}
即。一个JSON对象,但我想要一个JSON数组,代价是保留字符串键,如:
[
"bonjour",
"buongiorno",
"buenos dias"
]
我该怎么做?
答案 0 :(得分:4)
您可以使用array_values
:
echo json_encode(array_values($a));
答案 1 :(得分:1)
Php数组在严格意义上不是“数组”(字符串/对象/数字/等的集合,通过数字索引标识),但是是关联数组。也称为字典或哈希映射。它们用于键值存储。
JSON不支持字典作为类型,因此json_encode
会将这些字典转换为json对象,因为支持对象。
使用json_decode
,您可以通过第二个参数确定是否需要哈希映射(php数组)或对象:
$a = array(
"french" => "bonjour",
"italian" => "buongiorno",
"spanish" => "buenos dias"
);
$json = json_encode($a);
$object = json_decode($json, false); // this is the default behavior
$array = json_decode($json, true);
var_dump($object); // the object
var_dump($array); // same as the starting array
对象将是:
object(stdClass)#1 (3) {
["french"]=>
string(7) "bonjour"
["italian"]=>
string(10) "buongiorno"
["spanish"]=>
string(11) "buenos dias"
}
阵列将是:
array(3) {
["french"]=>
string(7) "bonjour"
["italian"]=>
string(10) "buongiorno"
["spanish"]=>
string(11) "buenos dias"
}