Если у вас есть один результат:
$result = array(
'NumberSelected' => $number,
'TargetPerc' => array(),
....
);
Затем вы хотите добавить его с некоторыми другими результатами:
$result_set = array();
$result_set[] = $result;
На данный момент $result_set
- это массив с одним элементом, массив с ключами 'NumberSelected'
, 'TargetPerc'
и т. Д.
Я думаю, что у вас возникла идея иметь массивы в массивах в массивах, поэтому подумайте об этом так: каждый индекс массива является компонентом «пути» к определенному фрагменту данных, как в файловой системе , В этом случае $result_set
является наиболее общей частью «пути», как буква диска в Windows. Внутри нашего притворного диска есть несколько папок с именами с номерами, поэтому $result_set[0]
- первая папка, $result_set[1]
- вторая. В каждой из этих папок есть подпапки, называемые NumberSelected
(на самом деле, эта будет похожа на файл, поскольку он имеет скалярное значение), TargetPerc
и т. Д., Которые соответствуют второму уровню вашего набора результатов: $result_set[0]['NumberSelected']
. Теперь окончательное измерение вашего массива соответствует отдельным файлам внутри каждого из 'TargetPerc'
, 'KpiDescription'
и т. Д., Где файлы, если вы не дали им именованные ключи, именуются числами.
Таким образом, для доступа к первому элементу 'KpiDescription'
в первом результате в вашем наборе результатов "путь" вашей файловой системы (согласно аналогии) будет
result_set/0/KpiDescription/0
Теперь переводим его обратно в PHP:
$result_set[0]['KpiDescription'][0]
Легко, правда?
Теперь JSON-часть вашего вопроса: как только вы json_encode
это сделаете, это будет выглядеть как большая строка текста в PHP, но волшебная вещь в json_encode
заключается в том, что он поддерживает исходную структуру данных, но в JavaScript.
Итак, ваш набор результатов будет выглядеть так:
result_set = [
{
NumberSelected: 123,
TargetPerc: [ ... ],
KpiDescription: [ ... ]
}
];
Как видите, Javascript - это просто массив объектов, где у каждого объекта есть некоторые свойства, которые оказываются массивами. Чтобы получить доступ к первому элементу в первом KpiDescription
(как выше), вы должны использовать это:
result_set[0].KpiDescription[0]
В качестве альтернативы, поскольку Javascript позволяет вам рассматривать свойства объекта как индексы массива (на самом деле это не вполне true, но это уже другая история), вы можете сделать это:
result_set[0]['KpiDescription'][0]
Выглядит знакомо? Все, чего не хватает в PHP - это ведущий $
.
Надеюсь, это поможет вам кое-что прояснить.