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

时间:2014-12-08 14:02:02

标签: php associative-array

我有一个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]等。

3 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分: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);

答案 2 :(得分: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
        )

)