php 仅循环的第一次迭代输出动态变量[已关闭]

yftpprvb  于 2023-01-08  发布在  PHP
关注(0)|答案(1)|浏览(118)

这个问题是由打字错误或无法再重现的问题引起的。虽然类似的问题在这里可能是on-topic,但这个问题的解决方式不太可能帮助未来的读者。
昨天关门了。
Improve this question
使用此代码:

$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_'.$image[$i]};
    echo ' Height = '. ${'img_h_'.$image[$i]};
endforeach;

只有循环的第一次迭代输出值。这是我得到的结果:

Width = 312 Height = 246 Width =  Height =  Width =  Height =

我想得到的是

Width = 312 Height = 246 Width = 485 Height = 442 Width = 380 Height = 289

我创建了一个Codepad来更好地说明。
我错过了什么?

5jvtdoz2

5jvtdoz21#

试试这个

foreach ($images as $i=>$image):
//    var_dump(substr($image, 0, 1));
    echo ' Width = '. ${'img_w_'.substr($image, 0, 1)};
    echo ' Height = '. ${'img_h_'.substr($image, 0, 1)};
endforeach;

您希望追加0, 1 and 2,但实际上追加的是0, ., j, p, g
与备注一致:

substr($image, 0, 1)

相等

$i

但是你的代码在图像名称中的字母上迭代。

相关问题