You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP循环仅首次迭代输出动态变量,问题出在哪?

问题原因分析

你的代码问题出在循环里的变量拼接逻辑:

${'img_w_'.$image[$i]}

这里的$image[$i]是取当前图片名字符串的第$i个字符:

  • 第一次循环$i=0,$image是'0.jpg',$image[0]是'0',刚好匹配$img_w_0,所以输出正常;
  • 第二次循环$i=1,$image是'1.jpg',$image[1]是'j',不存在$img_w_j这个变量,所以输出空值;
  • 第三次循环$i=2,$image是'2.jpg',$image[2]是'.',同样没有对应变量,输出空值。
修正方案

因为你的数组索引$i刚好和图片名里的数字序号一致,直接用$i拼接变量名即可:

$images = array(
    '0.jpg',
    '1.jpg',
    '2.jpg'
);

$img_w_0 = 312;
$img_h_0 = 246;
$img_w_1 = 485;
$img_h_1 = 442;
$img_w_2 = 380;
$img_h_2 = 289;

foreach ($images as $i=>$image):
    echo ' Width = '. ${'img_w_'.$i};
    echo ' Height = '. ${'img_h_'.$i};
endforeach;

如果后续图片名的序号和数组索引可能不一致,更稳妥的方式是从图片名里提取数字部分,比如用preg_match:

foreach ($images as $image):
    preg_match('/(\d+)\.jpg/', $image, $matches);
    $num = $matches[1];
    echo ' Width = '. ${'img_w_'.$num};
    echo ' Height = '. ${'img_h_'.$num};
endforeach;

这样不管数组索引怎么变,只要图片名里的数字正确,就能匹配到对应的宽高变量。

内容的提问来源于stack exchange,提问作者Tyssen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 01:10:15