在PHP中,如何更正数组中缺少的键?

时间:2008-10-21 15:07:55

标签: php arrays

使用array_unique后,将删除没有重复值的数组。但是,似乎也删除了键,这会在数组中留下带有数字索引的间隙(尽管对于关联数组来说很好)。如果我使用for循环进行迭代,我必须考虑丢失的索引并将密钥复制到一个新数组,但这看起来很笨拙。

3 个答案:

答案 0 :(得分:41)

$foo = array_values($foo);将为您重新编号数组

答案 1 :(得分:1)

而不是使用for循环,听起来你应该使用foreach循环。显然你不关心索引,因为你正在重新编号。

这个循环:

for ($i = 0; $i < $loopSize; $i++)
{
process($myArray[$i]);
}

变成

foreach($myArray as $key=> $value)
{
    process($value);
    /** or process($myArray[$key]); */
}

or even more simply


foreach($myArray as $value)
{
    process($value);
}

答案 2 :(得分:0)

在少数情况下,我尝试使用而不是foreach,我很快就后悔了。

它总是可以避免,甚至可以使用foreach但忽略值并使用键,几乎忘记了它的foreach而不是for,但避免键中的任何间隙并自动处理你的界限长度/分钟/最大功能或任何东西。

离。

foreach($myArray as $key=>$val)
{
     myArray[$key] = myFunction(myArray[$key]);
}

我特别发现这对并行数组很有用。

$a = getA(); $b = getB();
foreach($a as $key=>val)
{
    $sql = "INSERT INTO table (field1, field2) VALUES ($a[$key], $b[$key])";
}