作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
$list
是一个非常大的数组,包含一系列单词,其中一些大于 5 个字符,一些更小。此循环将取消设置单词长度超过 5 个字符的所有值。
for($i = 0; $i < count($list); $i++)
{
$list[$i] = trim($list[$i]);
if(strlen($list[$i]) > 5)
{
unset($list[$i]);
}
}
但是,它在 $list 的大约一半中执行此操作并被删除,列表中仍然保留了明显长于 5 个字母的单词,但仅从大约一半开始。是什么让它退出?我应该多次运行该循环吗?
最佳答案
您每次都调用 count,并且在循环期间取消设置。在循环之前仅调用 count 一次。无论如何,这是一个很好的做法,因为它大大减少了您必须进行的函数调用的数量。
$count = count($list);
for($i = 0; $i < $count; $i++)
{
$list[$i] = trim($list[$i]);
if(strlen($list[$i]) > 5)
{
unset($list[$i]);
}
}
或者只是为了好玩,使用 array_map/array_filter:
$list = array_map('trim', $list);
$list = array_filter($list, function($s) { return strlen($s) <= 5; });
关于php - 为什么这个循环会中途放弃?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7277129/
我有一个 SKSpriteNode (monsterNode) 的子类。它使用矢量自动在屏幕上运行以跟随玩家。我目前正在使用以下操作使其运行: SKAction *actionMove = [SKAc
我是一名优秀的程序员,十分优秀!