Update:
Ваш реальная проблема вниз к использованию array_merge
на ассоциативном массиве. Поведение array_merge
является переназначить дубликаты ключей, если они являются ассоциативными (см the docs):
Если входные массивы имеют одинаковые строковые ключи, то позднее значение этого ключа будет перезаписывать предыдущий. Если, однако, массивы содержат числовые клавиши, более поздняя величина не будет перезаписывать исходное значение, но будет добавлена.
И потому $myArray
явно используют строки как ключи, значение в $finalJson
являются переподчиняемыми. Что вам нужно сделать, это либо создать уникальные ключи на каждой итерации, или просто нажать значения $myArray
на численно индексированные $finalJson
массива (как я показал в моем оригинальный ответ ниже)
Проблема просто так:
$myArray["item"]["content"] = $item_content;
это внутри цикла, каждый раз, когда переназначение значение $myArray["item"]["content"]
, а не добавляя его в массив. Я подозреваю, что вы хотите сделать, это добавить это в нижней части цикла (для каждого нового значения $myArray
):
$finalJson[] = $myArray;
Затем на следующей итерации, $myArray
будет переназначен, и его новое значение будет присоединяться к переменной $finalJson
.
эй это сработало! вы знаете, как вычислить количество элементов (javascript).Я пробовал data.item.length, он не может работать. –
Поскольку '$ finalJson' теперь представляет собой числовой индексный массив, вы можете просто написать' data.length'. Для объектов вы можете использовать 'Object.keys (anObject) .length' или' var i = 0, p; для (p в объекте) {if (object.hasOwnProperty (p)) ++ i; } console.log (i); ' –
wait. Я попробовал data.length, он вернулся 27118. lol. –