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