所以,我所做的是我有一个空数组。
$text['test'] = array();
echo json_encode($text)
如果我json_encode它。结果是 { “测试”:[]}
如果我在javascript中使用它,则将其视为数组。 如果数组中有一些值
$text['test'] = array('1' =>'abc');
echo json_encode($text);
输出
{"test":{"1":"abc"}}
这被视为javascript中的对象。如果我收到一个对象而不是数组,反之亦然?数组中的值($ text ['test'])是动态的。
答案 0 :(得分:0)
这就是json_encode序列化数组的方式。如果它是一个数字和连续索引的数组,它将序列化为json数组。如果数组具有非数字或数字但不是连续的索引,那么它会将其序列化为对象以正确保持索引。
答案 1 :(得分:0)
由于数组中的键不是从0
开始,因此PHP json_encode
会将结果作为对象输出。
要获取数组,请使用0
作为第一个索引:
$text['test'] = array('0' =>'abc');
或者更好:
$text['test'] = array('abc');
...并按顺序继续索引。最简单的方法可能是单独添加条目:
$text['test'] = array();
$text['test'][] = 'abc';
$text['test'][] = 'def';
或者
$text['test'] = array('abc', 'def');
答案 2 :(得分:0)
问题不是Javascript,而是PHP如何处理数组和哈希。在PHP中,像
这样的数组$arr = array(1, 2, 3);
被视为一个数组。但是当您使用键创建数组时;
$arr = array("hello" => "world");
它隐含地变成了哈希。这确实很奇怪,会导致你在这里讨论的问题。
然而,在Javascript中,差异非常明显:
[1, 2, 3]
是一个数组;和
{hello: "world"}
是一个对象。
答案 3 :(得分:0)
关联数组始终作为对象输出。这里明确指出:http://php.net/manual/en/function.json-encode.php
答案 4 :(得分:0)
以下是一个关联数组:
$text['test'] = array('1' =>'abc');
PHP json_encode始终将关联数组输出为对象:
{"test":{"1":"abc"}}
您可以使用javascript数组文字:
var text = [“abc”];
答案 5 :(得分:0)
快速修复:只需修改代码中的一行
即可改变这个:
echo json_encode($text);
要:
echo json_encode($text.test);
'测试'属于' text'您可以使用'来访问的对象。'操作