Изменить порядок ассоциативного массива после удаления одного элемента

0

У меня есть 2D ассоциативный массив, который выглядит примерно так:

[0] => Array
(
    [foo]=>bar
    [foo]=>bar
    [foo]=>bar
)

[1] => Array
(
    [foo]=>bar
    [foo]=>bar
    [foo]=>bar
)


[2] => Array
(
    [foo]=>bar
    [foo]=>bar
    [foo]=>bar
)

Я хочу удалить один элемент, например [0], а затем "обновить" идентификаторы остальных элементов, поэтому [1] и его содержимое станет новым [0], [2] станет [1] и т.д.

  • 0
    Вы можете просто сбросить ключ с помощью unset($array[0]) , но почему так важно, чтобы ключи также сдвигались вверх?
  • 1
    array_values() должна сделать array_values() дело
Теги:
associative-array

3 ответа

1

Скажем, у вас есть эти значения массива в $ data. Затем вы удалили элемент

ex: unset($data[0]);

Теперь данные $ будут иметь

[1] => Array
(
    [foo]=>bar
    [foo]=>bar
    [foo]=>bar
)


[2] => Array
(
    [foo]=>bar
    [foo]=>bar
    [foo]=>bar
)

Теперь используйте функцию array_values ()

$data = array_values($data);

Теперь ассоциативный массив переупорядочивается до

[0] => Array
(
    [foo]=>bar
    [foo]=>bar
    [foo]=>bar
)

[1] => Array
(
    [foo]=>bar
    [foo]=>bar
    [foo]=>bar
)
0

Вы можете использовать array_values ():

$x = [
    ['foo1'=>'bar', 'foo2'=>'bar', 'foo3'=>'bar'],
    ['foo1'=>'bar', 'foo3'=>'bar', 'foo5'=>'bar'],
    ['foo1'=>'bar', 'foo3'=>'bar', 'foo5'=>'bar']];

unset($x[0]);
$x = array_values($x);
print_r($x);

вывод:

Array
(
    [0] => Array
        (
            [foo1] => bar
            [foo3] => bar
            [foo5] => bar
        )

    [1] => Array
        (
            [foo1] => bar
            [foo3] => bar
            [foo5] => bar
        )

)
0

предполагать

$arr = array(0=>array('a','b','c'),1=>array('a','b','c'),2=>array('a','b','c'));

Затем, чтобы получить ваше требование, выполните следующие действия:

unset($arr[0]);
$arr = array_values($arr);

Ещё вопросы

Сообщество Overcoder
Наверх
Меню