我的智慧在这里结束了,我无法理解。 我的代码在本地正常工作(使用xamp),但现在它无法正常工作。
当我运行此代码时:
echo "passed in parameter" . $_POST["jsoned"];
$unjasoned = json_decode("[\"23\",[],[[\"a@a.a\",\"2011-01-08\"]]]");
die("\ntype\n\t". gettype($unjasoned) . "\n\n\nAmount\n\t" . $unjasoned[0]);
我明白了:
passed in parameter[\"23\",[],[[\"a@a.a\",\"2011-01-08\"]]]
type
array
Amount
23
完全我想要的是什么
但是,当我在$_POST["jsoned"]
中使用传递的变量时会出现问题,您在上面的结果中看到的显然与我手动插入的内容完全相同。
所以,如果我这样做(相同的确切输入):
echo "passed in parameter" . $_POST["jsoned"];
$unjasoned = json_decode($_POST["jsoned"]);
die("\ntype\n\t". gettype($unjasoned) . "\n\n\nAmount\n\t" . $unjasoned[0]);
我明白了:
passed in parameter[\"23\",[],[[\"a@a.a\",\"2011-01-08\"]]]
type
NULL
Amount
所以......发生了什么事?!如果你有任何提示与我分享,那就永远感激不尽。
PS。我的服务器运行php版本5.2.13
答案 0 :(得分:1)
答案 1 :(得分:0)
帖子中的字符串包含\"
而不是"
。
当你自己写一个字符串作为文字时,你必须写\"
,因为你在双引号内,但在结果字符串中你只能获得"
。
尝试此调试以查看差异:
echo $_POST["jsoned"], PHP_EOL;
echo "[\"23\",[],[[\"a@a.a\",\"2011-01-08\"]]]";