PHP For(某些数组键)循环
完全编辑此问题,以供将来的学习者使用 我最初问一个while函数是否可以替换下面的代码。我没有意识到while不会像foreach那样自动递增,所以没有。下面是关于使用array_slice或经典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 这将直接检查结束条件,但不考
您仍然需要增加键,加上键必须统一才能工作 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) {
...
}