循环逻辑不能影响每个元素
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 声明之后的下一行。在您的示例中,没有括号,第二行仅在循环完成后调用一次。
在此先感谢您的帮助和查看。
我有一堆图像,我需要在 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 声明之后的下一行。在您的示例中,没有括号,第二行仅在循环完成后调用一次。