在PHP中,我该如何纠正数组中缺少的键?

在PHP中,我该如何纠正数组中缺少的键?

问题描述:

使用array_unique之后,将删除没有重复值的数组。但是,看起来键也被移除了,这留下了数组索引中的间隙(尽管对于关联数组来说是很好的)。如果我使用for循环进行迭代,我必须考虑缺失的索引,并将密钥复制到新数组中,但这看起来很笨拙。在PHP中,我该如何纠正数组中缺少的键?

$foo = array_values($foo);将重新编号的数组,你

+0

哇。我读了数组函数的列表,完全错过了那一个。谢谢。 – 2008-10-21 15:11:32

而不是使用它听起来像你应该使用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); 
} 

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

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

ex。

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])"; 
}