многомерный смешанный сдвиг ассоциативного / числового массива
-
22-08-2019 - |
Вопрос
у меня есть проблема, которую мне нужно исправить как можно скорее.если бы у меня было время переписать весь скрипт, я бы так и сделал, но такова жизнь программиста, не так ли?в любом случае, я взялся за проект, и у меня есть многомерный смешанный ассоциативно-числовой массив примерно так:
Array
(
[item1] => Array
(
[dataset] => Array()
[3] => Array()
[7] => Array()
)
[item2] => Array
(
[dataset] => Array()
[4] => Array()
[19] => Array()
[2] => Array()
)
)
что мне нужно сделать, это сдвинуть набор данных индекс в каждом из ItemX Элемент x индексы, которые должны быть последним индексом, приведшим к этому:
Array
(
[item1] => Array
(
[3] => Array()
[7] => Array()
[dataset] => Array()
)
[item2] => Array
(
[4] => Array()
[19] => Array()
[2] => Array()
[dataset] => Array()
)
)
несколько вещей, которые могут помочь этому произойти, заключаются в том, что я знать что тот набор данных индекс всегда будет первым индексом в ItemX Элемент x индекс и ключ всегда будут "dataset", а все остальные всегда будут числовыми индексами.есть ли способ сделать это в php?тот факт, что это смешанный массив, сбивает меня с толку.я не могу допустить, чтобы числовые индексы сбрасывались и начинались с 0.не имеет значения, сдвинут ли их порядок, важно только то, что все они находятся перед индексом "dataset".может быть, это просто один из таких дней....:\ мы высоко ценим любые предложения или комментарии.
Решение
Зациклите хотя бы все элементы, подобные этому:
foreach ($all_items as $key =>$items) {
$dataset = $items['dataset'];
unset($all_items[$key]['dataset']); // Removing it (from the top)
$all_items[$key]['dataset'] = $dataset; // Adding it again (at the bottom)
}
Отмена установки элемента 'dataset' и добавление его снова приведет к добавлению элемента внизу.
Важно, чтобы вы изменяли исходный массив напрямую, а не $items из foreach , потому что эти изменения не повлияют на исходный массив.