У меня есть массив, созданный из запроса базы данных, который имеет все данные, необходимые для выполнения новой функции, createList()
, просто не в структура, которая удобна. В настоящее время мне интересно, стоит ли восстанавливать данные в этом массиве или просто делать новый запрос к базе данных. В процессе этого я пытаюсь создать простейшие средства для восстановления данных из исходного массива в новый массив, подходящий для функции createList()
.Определить другое/новое значение для тех же ключей в массиве while в цикле foreach
Исходный массив в виде:
$original = [0] => (
'cgtitle' => 'tree'
'cstitle' => 'branch'
'cgorder' => 0
'csorder' => 0
)
[1] => (
'cgtitle' => 'tree'
'cstitle' => 'stick'
'cgorder' => 0
'csorder' => 1
)
[2] => (
'cgtitle' => 'tree'
'cstitle' => 'leaf'
'cgorder' => 0
'csorder' => 2
)
[3] => (
'cgtitle' => 'car'
'cstitle' => 'wheel'
'cgorder' => 1
'csorder' => 0
)
[4] => (
'cgtitle' => 'car'
'cstitle' => 'bumper'
'cgorder' => 1
'csorder' => 2
)
etc.
и мне нужен массив, аналогичный форме:
$new = ['tree'] => (
'branch',
'stick',
'leaf'
)
['car'] => (
'wheel',
'bumper'
)
etc.
На данный момент я не могу видеть способ сделать некоторые умные вложенные циклы. Моя лучшая попытка состояла в том, чтобы запустить цикл foreach на $ original, чтобы создать новый массив ($ cgArray) значений cgtitle. Я бег второго цикла Еогеаспа на $ оригинального и поместите cstitle внутри ключа $ cgArray, что соответствует это двойникам cgtitle значения. Заказ сохраняется от $ оригинал.
Есть ли лучший способ, чем выполнение двух различных итераций foreach на $ original? Например, как функция в цикле foreach, чтобы отметить, что указанный ключ (cgtitle) изменился с последней итерации, и я могу затем начать строить новый массив в одном цикле?
Например:
foreach ($original as $key => $value) {
if ([$_SESSION['cOrdered'][$key]['cgtitle'] is different from valye of last loop) {
$new[[$_SESSION['cOrdered'][$key]['cgtitle'] = array();
} else {
array_push($new[[$_SESSION['cOrdered'][$key]['cgtitle'], $new[[$_SESSION['cOrdered'][$key]['cstitle']);
}
)
Ну, я чувствую себя немного глупо, забывая о таком простом решении. Большое спасибо @Yada, это сработало отлично. – biscuitstack