在php $ _GET数组上使用json_encode会导致字符串而不是字符串数组

时间:2016-12-10 18:30:57

标签: javascript php json

我正在尝试使用php GET方法从另一个页面上的keywordBox字段创建一个关键字数组。

以下是附加到网页网址的关键字示例:

/searchResults.php?keywordBox=computing+finance

这对我来说没问题但是当我转换为JSON对象时,似乎关键字变成了单个字符串(“计算金融”)而不是字符串数组([“计算”,“财务”])

var keywords = <?php echo json_encode($_GET['keywordBox']) ?>;
alert(keywords[0]);  // output "c"

我认为这会输出数组“计算”中的第一个单词,而不是输出第一个字符“c”,所以我对这些语言有点困惑和新意。任何解释都非常感激。

2 个答案:

答案 0 :(得分:1)

keywordBox可以是数组,只需使用以下命令更改查询字符串:

?keywordBox[]=computing&keywordBox[]=finance

否则,您可以将其保留为字符串,并explode

var keywords = <?php echo json_encode(explode(' ', $_GET['keywordBox'])) ?>;

答案 1 :(得分:1)

注意您正在编码的内容。

这只编码一个GET参数,而不是$_GET超全局数组:

var keywords = <?php echo json_encode($_GET['keywordBox']) ?>;

使用您的指定网址和参数keywordBox=computing+finance$_GET['keywordBox']将包含单个字符串"computing finance",而不是数组。如果希望参数包含数组,则需要使用数组表示法,如keywordBox[]=computing&keywordBox[]=finance中所示。