循环逻辑不能影响每个元素

loop logic can't effect every element

在此先感谢您的帮助和查看。

我有一堆图像,我需要在 Web 目录中处理它们的路径和元数据: 例如'path/to/files/u_1.jpg'

$list=array_values($list);
foreach ($list as &$value)
   list($width, $height) = getimagesize($dir.$udir.$value);
   $value = $predir.$udir.$value.$wid.$width.$hgt.$height.$lft.$end;

我使用 scandir 将元素正确地放入 $list 数组中。
其余变量,基本上是在 html 页面中创建 img 标签。

然而,我得到的只是最后一个正确完成的元素,其余的都没有跳出循环:

Array
(
[0] => u_1.jpg
...
[16] => u_8.jpg
[17] => img src="/images/photo/up/u_9.jpg" style="display: none; width: 1526px; height: 1080px; left: 0px; top: px; ">
)

但已正确找到元数据(该图像的图像高度和宽度)。

我需要的是让每一行看起来像最后一行。我已经搜索过,但我认为这可能是一个基本的逻辑问题。有没有办法将信息传递给另一个保存数组,或者类似的东西?

没有{}foreach会考虑下一行就可以了。所以只为最后一个元素设置值。放置 {}s 以便 foreach 知道要处理什么。尝试 -

foreach ($list as &$value) {
   list($width, $height) = getimagesize($dir.$udir.$value);
   $value = $predir.$udir.$value.$wid.$width.$hgt.$height.$lft.$end;
}

您的 foreach 循环主体需要括号:

foreach ($list as &$value) {
   list($width, $height) = getimagesize($dir.$udir.$value);
   $value = $predir.$udir.$value.$wid.$width.$hgt.$height.$lft.$end;
}

如果省略括号,循环只会执行 foreach 声明之后的下一行。在您的示例中,没有括号,第二行仅在循环完成后调用一次。