Ardışık olmayan dizi den json kodlanmış dizisi kodlamak nasıl

2 Cevap php

Ben gibi bir dizi döndürür bir tabloda bir liste sorgu yapmak (PHP 5.2.6 On) CakePHP kullanarak:

Array (

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

)

Bir sıralı dizi json_encode değil (çünkü) yerine bir Jeditable Seç doldurmak için gereken bir JSON dizinin bir nesneye kodlar.

PHP 5.2.6 herhangi bir ek parametreleri desteklemiyor, bu yüzden bir json kodlanmış dizi oluşturmak için zorlayamaz.

Benim soru, herkes temiz bir şekilde bu sorunu çözmek nasıl biliyor?

2 Cevap

bkz http://docs.php.net/array_values:

array_values() returns all the values from the input array and indexes numerically the array.

örneğin

$a = array(
  0 => 'None',
  3 => 'Value 1',
  5 => 'Value 2'
);
$x = array_values($a);
print_r($x);
echo json_encode($x);

baskılar

Array
(
    [0] => None
    [1] => Value 1
    [2] => Value 2
)
["None","Value 1","Value 2"]

edit: Javascript arrays can't have gaps. You'd have to fill the missing elements with örneğin 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);

baskılar ["None",null,null,"Value 1",null,"Value 2"]

You dizinleri korumak istiyorsanız, bir nesneyi kullanmanız gerekir. Değilse, dizi reindex array_merge geçirin.

www.php.net/array_merge