PHP & amp; JSON: вставка массива во вложенный массив

Я создаю структуру JSON для передачи обратно в Ajax. Я хотел бы вставить 'para' => "Hello" в "content" как это:

{
"sections": {
"content": [{
"para": "Hello"}]
}
}

Я пытался использовать этот код:

$array = array('sections' => array());
array_push($array["sections"], array("content" => array())); // content must be initialized as empty
array_push($array["sections"][0], array("para" => "Hello"));

Но я получил это вместо:

{
"sections": [{
"content": [],
"0": {
"para": "Hello"}
}]
}

Если я попробую array_push($array["sections"]["content"], array("para" => "Hello"))Вместо этого я получаю ошибку. Как мне вставить массив в "content"? Что я делаю неправильно?

1

Решение

Если я правильно понял ваши намерения, вот структура массива, к которой вы стремитесь:

array("sections" => array(
"content" => array("para" => "Hello"),
));

Однако в Javascript [] представляет массив, а {} представляет объект. Если вы пытаетесь создать объект со свойством «0», это не возможно в PHP. Имена переменных должны начинаться с буквы или подчеркивания.

Вот массив content объекты:

$content = new stdClass();
$content->para = 'hello';

array("sections" => array(
"content" => array($content),
));

Чтобы добавить массивы содержимого:

array("sections" => array(
"content" => array(
array("para" => "Hello"),
array("para" => "Hello"),
array("para" => "Hello"),
),
));

Вы также можете сначала создать свой собственный массив содержимого, если вы выполняете итерацию по индексу, а затем json_encode. Основной пример:

$content = array();

for (i=0; i <3; i++) {
$content[] = array('para' => 'hello');
}

json_encode(array("sections" => array(
"content" => array($content),
)));

Чтобы преобразовать это в JSON, поместите ваш массив в json_encode() вызов.

2

Другие решения

$array['sections'] = array("content" => array(array("para" => "Hello")));
echo json_encode($array);

выдаст результат в нужном формате

1