Подтвердить что ты не робот

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

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

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

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

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

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

4b9b3361

Ответ 1

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

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

Пример:

// Non-consecutive 3number 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]]

Ответ 2

Функция json_encode() поможет вам кодировать массив в JSON в php.

если вы будете использовать только функцию json_encode напрямую без какой-либо конкретной опции, она вернет массив. Как упомянутое выше вопрос

$array = array(
  2 => array("Afghanistan",32,13),
  4 => array("Albania",32,12)
);
$out = array_values($array);
json_encode($out);
// [["Afghanistan",32,13],["Albania",32,12]]

Поскольку вы пытаетесь конвертировать массив в JSON, то я бы предложил использовать JSON_FORCE_OBJECT в качестве дополнительной опции (параметров) в json_encode, как показано ниже

<?php
$array=['apple','orange','banana','strawberry'];
echo json_encode($array, JSON_FORCE_OBJECT);
// {"0":"apple","1":"orange","2":"banana","3":"strawberry"} 
?>

Ответ 3

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

Например:

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

Вернется:

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

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

Ответ 4

Обычно JSON используется для чтения данных с веб-сервера и отображения данных на веб-странице.

Эта глава научит вас, как обмениваться данными JSON между клиентом и сервером PHP.

PHP имеет несколько встроенных функций для обработки JSON.

Объекты в PHP можно преобразовать в JSON с помощью функции PHP json_encode():

<?php
$myObj->name = "John";
$myObj->age = 30;
$myObj->city = "New York";

$myJSON = json_encode($myObj);

echo $myJSON;
?>

Ответ 5

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