многомерный смешанный сдвиг ассоциативного / числового массива

StackOverflow https://stackoverflow.com/questions/878692

Вопрос

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

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 , потому что эти изменения не повлияют на исходный массив.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top