如何从非顺序数组编码为JSON编码数组

使用CakePHP(在PHP 5.2.6上)我在一个返回如下数组的表上执行列表查询:

阵列(

[0] => None
[3] => Value 1
[5] => Value 2

由于它不是一个顺序数组,json_encode()将它编码为一个对象,而不是一个JSON数组,我需要填充Jeditable Select。

PHP 5.2.6不支持任何附加参数,所以我不能强制它创建一个JSON编码数组。

我的问题,有谁知道我怎么能以一种干净的方式解决这个问题?


请参阅http://docs.php.net/array_values:

array_values()返回输入数组中的所有值,并以数组的形式索引。

例如

$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"]


如果你想保留索引,你需要使用一个对象。 如果不是,则通过array_merge传递它以重新索引数组。

www.php.net/array_merge

链接地址: http://www.djcxy.com/p/47791.html

上一篇: How to encode to JSON encoded array from non sequential array

下一篇: Learning Ruby on Rails