在使用array_unique
之后,没有重复值的数组将被删除。但是,键似乎也被删除了,这在具有数字索引的数组中留下了间隙(尽管对于关联数组是可以的)。如果我使用for循环进行迭代,我必须说明缺少的索引,并将键复制到一个新的数组中,但这似乎很笨拙。
发布于 2008-10-21 15:08:54
$foo = array_values($foo);
将为您对数组重新编号
发布于 2008-10-21 17:39:20
听起来应该使用foreach循环,而不是使用for循环。显然,您根本不关心索引,因为您正在对它们重新编号。
此循环:
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);
}
发布于 2010-10-15 01:53:14
在我尝试使用for而不是foreach的少数情况下,我很快就后悔了。
它实际上总是可以避免的,你甚至可以使用foreach,但忽略值并使用键,几乎忘记了它是foreach而不是for,但避免了键中的任何间隙,并且在没有length/min/max函数或其他函数的情况下自动处理您的边界。
例如。
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])";
}
https://stackoverflow.com/questions/222220
复制相似问题