Javascript 创造;“对象”;及;“数组”;以允许JS区分它们的方式使用PHP

Javascript 创造;“对象”;及;“数组”;以允许JS区分它们的方式使用PHP,javascript,php,arrays,json,Javascript,Php,Arrays,Json,PHP创建数组(索引数组或关联数组)的语法是相同的,即 $arr = []; 但是,json\u encode会将一个空的PHP“数组”(注意引号)转换为一个空的JS数组([]),这在某些情况下是不可取的 有没有一种方法可以在PHP中创建一个空的Associative数组,这样json_encode将它转换为一个空的JS对象,即{},而不是[]使用stdClass(): 当然,一旦它成为stdclass,就不能再将其用作数组了。但这至少是在JSON中强制使用空对象的一种方法,因此您可以将代码作

PHP创建数组(索引数组或关联数组)的语法是相同的,即

$arr = [];
但是,
json\u encode
会将一个空的PHP“数组”(注意引号)转换为一个空的JS数组(
[]
),这在某些情况下是不可取的

有没有一种方法可以在PHP中创建一个空的Associative数组,这样
json_encode
将它转换为一个空的JS对象,即
{}
,而不是
[]
使用
stdClass()

当然,一旦它成为stdclass,就不能再将其用作数组了。但这至少是在JSON中强制使用空对象的一种方法,因此您可以将代码作为特例:

if (count($array) == 0) {
   $json = json_encode(new StdClass);
} else {
    $json = json_encode($array);
}
使用
stdClass()

当然,一旦它成为stdclass,就不能再将其用作数组了。但这至少是在JSON中强制使用空对象的一种方法,因此您可以将代码作为特例:

if (count($array) == 0) {
   $json = json_encode(new StdClass);
} else {
    $json = json_encode($array);
}
您可以使用:

这将获得预期的
{}
输出。

您可以使用:


这将获得预期的
{}
输出。

您只需将
JSON\u FORCE\u对象
选项传递给函数即可。这将强制所有空数组也成为对象

JSON_FORCE_对象(整数)输出一个对象而不是一个数组 使用非关联数组时。当 输出的收件人需要一个对象,而数组为空。 从PHP5.3.0开始提供

因此:

在我看来,这看起来比转换对象更干净

甚至

$json = json_encode($array, empty($array) ? JSON_FORCE_OBJECT : 0);

只需将
JSON\u FORCE\u对象
选项传递给函数即可。这将强制所有空数组也成为对象

JSON_FORCE_对象(整数)输出一个对象而不是一个数组 使用非关联数组时。当 输出的收件人需要一个对象,而数组为空。 从PHP5.3.0开始提供

因此:

在我看来,这看起来比转换对象更干净

甚至

$json = json_encode($array, empty($array) ? JSON_FORCE_OBJECT : 0);

你一定要比我快一秒,该死的。:)让我试试MongoDB能容忍多少:)Juuuust打败我一秒钟,dang.)让我试试MongoDB能容忍多少:)我不知道——非常方便!是的,这将使真正的empry数组也能转换为空对象,这不是我想做的事情。条件可以用来解决这个问题,但我理解。@alexandernst添加了与其他解决方案一样需要的条件。我不知道——非常方便!是的,这将使真正的empry数组也能转换为空对象,这不是我想做的事情。可以使用条件来解决这个问题,但我理解。@alexandernst添加了与其他解决方案一样需要的条件。
$json = json_encode($array, empty($array) ? JSON_FORCE_OBJECT : 0);