删除一个元素后对关联数组重新排序


Reorder associative array after removing one element

我有一个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],然后"刷新"剩余的元素 ID,因此 [1] 及其内容将成为新的 [0],[2] 将成为 [1] 等。

假设您在$data中有这些数组值。然后您删除了该元素

例如:unset($data[0]);

现在$data将拥有

[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
)

假设

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

然后,要获得您的要求,步骤如下:

unset($arr[0]);
$arr = array_values($arr);
您可以使用

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
        )
)