Массив PHP в массив JSON с использованием json_encode ();

Я закодировал массив, который я сделал, используя встроенный json_encode(); функция. Мне нужно это в формате массива массивов, например:

 [["Afghanistan",32,12],["Albania",32,12]] 

Однако он возвращается как:

 ["2":["Afghanistan",32,12],"4":["Albania",32,12]] 

Как удалить эти номера строк без использования каких-либо трюков Regex?

Related of "Массив PHP в массив JSON с использованием json_encode ();"

Если ключи массива в вашем массиве PHP не являются последовательными числами, json_encode() должен сделать другую конструкцию объектом, так как массивы JavaScript всегда последовательно индексируются по цифре. Используйте array_values() для внешней структуры в PHP, чтобы отменить исходные ключи массива и заменить их нулевой последовательной нумерацией:

Пример:

 // Non-consecutive number keys are OK for PHP // but not for a JavaScript array $array = array( 2 => array("Afghanistan",32,13), 4 => array("Albania",32,12) ); // array_values() removes the original keys and replaces // with plain consecutive numbers $out = array_values($array); json_encode($out); // [["Afghanistan",32,13],["Albania",32,12]] 

Я хочу добавить к ответу Майкла Берковски, что это также может произойти, если порядок массива отменяется, и в этом случае немного сложнее наблюдать проблему, потому что в объекте json порядок будет упорядочен по возрастанию.

Например:

 [ 3 => 'a', 2 => 'b', 1 => 'c', 0 => 'd' ] 

Вернется:

 { 0: 'd', 1: 'c', 2: 'b', 3: 'a' } 

Таким образом, решение в этом случае – использовать array_reverse перед его кодировкой json

Если вы не укажете индексы в своем начальном массиве, вы получите регулярные числовые. Массивы должны иметь некоторую форму уникального индекса