【问题标题】:loop logic can't effect every element循环逻辑不能影响每个元素
【发布时间】:2015-05-08 04:57:37
【问题描述】:

提前感谢您的帮助和寻找。

我有一堆图像,我需要在 Web 目录中处理它们的路径和元数据: 例如'路径/到/文件/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; ">
)

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

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

【问题讨论】:

    标签: php loops logic


    【解决方案1】:

    没有{} foreach 将在下一行考虑它。所以只为最后一个元素设置值。输入{}s 以便foreach 知道要处理什么。试试 -

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

    【讨论】:

    • 哇,太尴尬了。我确实查过了。感谢您的耐心等待。
    【解决方案2】:

    你需要在你的 foreach 循环体周围加上括号:

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

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

    【讨论】:

    • 感谢您抽出宝贵时间查看此内容,非常感谢。
    猜你喜欢
    • 2022-11-14
    • 2017-01-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-18
    • 2015-07-10
    • 2020-10-03
    相关资源
    最近更新 更多