重置PHP数组索引

143
我有一个 PHP 数组,长这样:
[3] => Hello
[7] => Moo
[45] => America

用什么PHP函数可以实现这个效果?

[0] => Hello
[1] => Moo
[2] => America
4个回答

305

array_values() 函数[文档]可以实现这个功能:

$a = array(
    3 => "Hello",
    7 => "Moo",
    45 => "America"
);
$b = array_values($a);
print_r($b);
Array
(
    [0] => Hello
    [1] => Moo
    [2] => America
)

谢谢,这对我来说非常方便,因为它将 SPL 中的迭代器转换为数组,但我需要结果从 0 开始索引。 - Programmer Dancuk

6
如果您想出于某种原因重置数组的键计数;
$array1 = [
  [3]  => 'Hello',
  [7]  => 'Moo',
  [45] => 'America'
];
$array1 = array_merge($array1);
print_r($array1);

输出:

Array(
  [0] => 'Hello',
  [1] => 'Moo',
  [2] => 'America'
)

5

您可以使用更高效的方法:

$a = [
    3 => "Hello",
    7 => "Moo",
    45 => "America"
];

$a = [...$a];

5
使用 array_keys() 函数获取数组的键(key),使用 array_values() 函数获取数组的值(value)。
想要获取一个数组的值:
$array = array( 3 => "Hello", 7 => "Moo", 45 => "America" );

$arrayValues = array_values($array);// returns all values with indexes
echo '<pre>';
print_r($arrayValues);
echo '</pre>';

输出:

Array
(
    [0] => Hello
    [1] => Moo
    [2] => America
)

您想获取数组的键:

$arrayKeys = array_keys($array);// returns all keys with indexes
    echo '<pre>';
    print_r($arrayKeys);
    echo '</pre>';

输出:

Array
(
    [0] => 3
    [1] => 7
    [2] => 45
)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接