使用CakePHP(在PHP 5.2.6上)我在表上执行列表查询,该表返回如下数组:
阵 (
[0] => None
[3] => Value 1
[5] => Value 2
)
因为它不是一个顺序数组,所以json_encode()将它编码为一个对象,而不是我需要填充Jeditable Select的JSON数组。
PHP 5.2.6不支持任何其他参数,因此我无法强制它创建JSON编码数组。
我的问题,是否有人知道如何以干净的方式解决这个问题?
答案 0 :(得分:5)
请参阅http://docs.php.net/array_values:
array_values()返回输入数组中的所有值,并以数字形式索引数组。
e.g。
$a = array(
0 => 'None',
3 => 'Value 1',
5 => 'Value 2'
);
$x = array_values($a);
print_r($x);
echo json_encode($x);
打印
Array
(
[0] => None
[1] => Value 1
[2] => Value 2
)
["None","Value 1","Value 2"]
编辑:Javascript数组不能有差距。你必须填写缺失的元素,例如NULL。
$a = array(
0 => 'None',
3 => 'Value 1',
5 => 'Value 2'
);
$na = array_pad(array(), max(array_keys($a)), null);
$a += $na;
ksort($a);
echo json_encode($a);
打印["None",null,null,"Value 1",null,"Value 2"]
答案 1 :(得分:2)
如果要保留索引,则需要使用对象。如果没有,请将其传递给array_merge以重新索引数组。