PHP创建数组(索引的或关联的)的语法是相同的,也称为
$arr = [];但是,json_encode会将一个空的PHP“数组”(注意引号)转换为一个空的JS数组([]),这在某些情况下是不可取的。
有没有办法在PHP中创建一个空的关联数组,这样json_encode就会把它转换成一个空的JS对象,也就是{},而不是[]。
发布于 2015-07-17 01:52:15
使用stdClass()
php > $x = new StdClass;
php > echo json_encode($x);
{}当然,一旦它成为stdclass,您就不能再将其用作数组。但这至少是在JSON中强制空对象的一种方式,因此您可以对您的代码进行特殊处理:
if (count($array) == 0) {
$json = json_encode(new StdClass);
} else {
$json = json_encode($array);
}发布于 2015-07-17 01:52:25
发布于 2015-07-17 01:55:40
您可以只将JSON_FORCE_OBJECT选项传递给json_encode函数。这将强制任何空数组也成为对象。
使用非关联数组时,
JSON_FORCE_OBJECT (integer)输出对象而不是数组。当输出的接收方需要一个对象而数组为空时,这一点尤其有用。从PHP 5.3.0开始可用。
所以:
if (empty($array)) {
$json = json_encode([], JSON_FORCE_OBJECT);
} else {
$json = json_encode($array);
}在我看来,这看起来比转换对象更干净。
甚至是
$json = json_encode($array, empty($array) ? JSON_FORCE_OBJECT : 0);https://stackoverflow.com/questions/31461182
复制相似问题