首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在PHP中,如何纠正数组中缺少的键?

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

Stack Overflow用户
提问于 2008-10-21 15:07:55
回答 3查看 9K关注 0票数 16

在使用array_unique之后,没有重复值的数组将被删除。但是,键似乎也被删除了,这在具有数字索引的数组中留下了间隙(尽管对于关联数组是可以的)。如果我使用for循环进行迭代,我必须说明缺少的索引,并将键复制到一个新的数组中,但这似乎很笨拙。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2008-10-21 15:08:54

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

票数 41
EN

Stack Overflow用户

发布于 2008-10-21 17:39:20

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

此循环:

代码语言:javascript
复制
for ($i = 0; $i < $loopSize; $i++)
{
process($myArray[$i]);
}

变成了

代码语言:javascript
复制
foreach($myArray as $key=> $value)
{
    process($value);
    /** or process($myArray[$key]); */
}

or even more simply


foreach($myArray as $value)
{
    process($value);
}
票数 1
EN

Stack Overflow用户

发布于 2010-10-15 01:53:14

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

它实际上总是可以避免的,你甚至可以使用foreach,但忽略值并使用键,几乎忘记了它是foreach而不是for,但避免了键中的任何间隙,并且在没有length/min/max函数或其他函数的情况下自动处理您的边界。

例如。

代码语言:javascript
复制
foreach($myArray as $key=>$val)
{
     myArray[$key] = myFunction(myArray[$key]);
}

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

代码语言:javascript
复制
$a = getA(); $b = getB();
foreach($a as $key=>val)
{
    $sql = "INSERT INTO table (field1, field2) VALUES ($a[$key], $b[$key])";
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/222220

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档