我正在使用PHP并遇到json_encode()
的问题。该过程擦除由“array_values”命令设置的初始“密钥”,如下所示。
array(1) {
[0]=> array(5) {
["ID"]=> string(4) "2679" [
"PackageName"]=> "Update for Windows 8.1 for x64-based Systems (KB2965065)"
["Description"]=> string(262) "Install this update to resolve issues in Windows."
["KB"]=> string(7) "2965065"
["Repo"]=> string(21) "Windows Update Server"
}
$packages = array_values($this->control->fetchPackageTables($this->input->get("platform")));
[
{
"ID":"2679",
"PackageName":"Update for Windows 8.1 for x64-based Systems (KB2965065)",
"Description":"Install this update to resolve issues in Windows.",
"KB":"2965065",
"Repo":"Windows Update Server"
}
]
我尝试通过数组循环使用foreach并设置一个数字,但它仍然被丢弃。有什么想法吗?
谢谢!
答案 0 :(得分:3)
JSON不支持关联数组。
JSON / Javascript中的数组仅包含编号索引。关联数组将转换为对象/属性。
没有任何东西掉线。 [ ]
表示一个数组。 { }
表示一个对象。您在数组中有one
个对象。
答案 1 :(得分:0)
我认为它删除索引的原因是因为它们是按数字索引的,因此在编码时它只是认为它不需要键,你可以尝试将键设置为字符串而不是整数,因此编码不会擦拭它们。
答案 2 :(得分:0)
我将此作为答案添加,因为我目前无法发表评论,并且对我自己很有帮助。如果您发现json的一段被编码为一个数组而不是一个对象(例如:键被删除)。
您可以像这样添加JSON_FORCE_OBJECT:
json_encode($foo,JSON_FORCE_OBJECT);
这将强制将所有内容编码为对象,保留所有键。
您可以在此处找到更多标记:http://php.net/manual/en/function.json-encode.php