PHP For(某些数组键)循环

PHP For(某些数组键)循环,php,for-loop,foreach,Php,For Loop,Foreach,完全编辑此问题,以供将来的学习者使用 我最初问一个while函数是否可以替换下面的代码。我没有意识到while不会像foreach那样自动递增,所以没有。下面是关于使用array_slice或经典for循环的更好解决方案的好答案 您仍然需要增加键,加上键必须统一才能工作 Foreach在场景中工作,对范围内的间隙更具弹性。使用例如1、2和4作为键在集合上迭代,这对foreach非常有用 另一种方法可以是: for ($i=0;$i<25;$i++) etc 这将直接检查结束条件,但不考

完全编辑此问题,以供将来的学习者使用

我最初问一个while函数是否可以替换下面的代码。我没有意识到while不会像foreach那样自动递增,所以没有。下面是关于使用array_slice或经典for循环的更好解决方案的好答案


您仍然需要增加键,加上键必须统一才能工作

Foreach在场景中工作,对范围内的间隙更具弹性。使用例如1、2和4作为键在集合上迭代,这对foreach非常有用

另一种方法可以是:

for ($i=0;$i<25;$i++) etc 
这将直接检查结束条件,但不考虑间隙,这可能导致for循环本身中出现额外代码。

您可以使用simple for循环

像这样

for($i = 0; $i < 25; $i++)
{
    echo '<img src="'.$array[$i].'/preview_image.jpg">';
}
我喜欢数组_切片解决方案。 您还应该为显示HTML的控件结构使用替代语法


实际上,您希望从文件中检索前24行

有很多方法可以做到这一点

这是一种方式:

$file = new SplFileObject($path);
$file->setFlags($file::DROP_NEW_LINE);
$head = new LimitIterator($file, 0, 24);
foreach ($head as $value) {
    ...
}
这样做的好处是,您可以获得一个简单的foreach变量,该变量提供您需要的数据。这与Decorator模式配合使用,非常灵活

如果文件的记录少于24行,则foreach将提前完成


此外,此代码不会仅为提供前24行而将整个文件读入内存。

您能向我们显示实际的数组吗?请明确说明问题ForEach数组\u filter$array,函数$key{return$key<25;},数组\u filter\u使用\u key as$key=>$value{@MarkBaker array_slice$array,0,25是一个更好的解决方案,如果我们用SplFileObject处理大文件或用pdo语句处理数据库。但是,如果我们处理小数组,它只会带来非有益的冗余。非有益的冗余对一个来说是更模块化的。更多的装饰器在这里很容易应用,也可以使用arr没有对象接口。
<?php

/* Logic Part */

$array = [...];
$array = array_slice($array, 0, 25);

// You MUST apply this function before echoing user inputs
// for the sake of security reasons.
function h($s)
{
    return htmlspecialchars($s, ENT_QUOTES, 'UTF-8');
}

/* HTML Part */

?>
<!DOCTYPE html>
<meta charset="UTF-8">
<title>Example</title>

<div>
<?php foreach ($array as $value): ?>
    <img src="<?=h($value)?>/preview_image.jpg">
<?php endforeach; ?>
</div>
$file = new SplFileObject($path);
$file->setFlags($file::DROP_NEW_LINE);
$head = new LimitIterator($file, 0, 24);
foreach ($head as $value) {
    ...
}