在PHP中,我该如何纠正数组中缺少的键?
问题描述:
使用array_unique
之后,将删除没有重复值的数组。但是,看起来键也被移除了,这留下了数组索引中的间隙(尽管对于关联数组来说是很好的)。如果我使用for循环进行迭代,我必须考虑缺失的索引,并将密钥复制到新数组中,但这看起来很笨拙。在PHP中,我该如何纠正数组中缺少的键?
答
$foo = array_values($foo);
将重新编号的数组,你
答
而不是使用它听起来像你应该使用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])";
}
哇。我读了数组函数的列表,完全错过了那一个。谢谢。 – 2008-10-21 15:11:32