PHP-CLI似乎从参数解析JSON字符串

PHP-CLI似乎从参数解析JSON字符串,json,php,Json,Php,使用PHP5.3,如果我通过命令行发送一个JSON编码的字符串作为一个片段 /usr/local/bin/php -q /path/to/script.php {"key":"test","cache":1} 。。。在script.php中,代码是: <?php print_r($argv); ?> 这完全出乎意料 虽然我可以接受这一点,但我想知道PHP在哪里记录了这一点,因此,如果每次都将JSON编码的字符串作为参数传递,我100%确信它会像这样工作 此外,JSON字符串中的数

使用PHP5.3,如果我通过命令行发送一个JSON编码的字符串作为一个片段

/usr/local/bin/php -q /path/to/script.php {"key":"test","cache":1}
。。。在script.php中,代码是:

<?php print_r($argv); ?>
这完全出乎意料

虽然我可以接受这一点,但我想知道PHP在哪里记录了这一点,因此,如果每次都将JSON编码的字符串作为参数传递,我100%确信它会像这样工作


此外,JSON字符串中的数组似乎也无法按预期工作。

如果要在cli参数中使用特殊字符,应始终将它们括在引号中

"{\"key\":\"test\",\"cache\":1}"

'{"key":"test","cache":1}'

是的,我想是这样的,但有趣的是PHP试图解析字符串,但这个特性似乎并不广为人知。在命令行上,您可以通过列表符号
{a,b,c}
(例如在
mkdir-p path/to/{folderA,folderB}
)一次定义多个参数。JSON对象看起来很相似,因此被误解了。据我所知,这不是PHPs的错误,而是CLI调用“work”的方式。您知道如何从PHP脚本中的命令行参数解析Json了吗?
"{\"key\":\"test\",\"cache\":1}"

'{"key":"test","cache":1}'