英文:
Only first iteration of loop outputs dynamic variables
问题
以下是您提供的代码的翻译部分:
使用此代码:
$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 ' 宽度 = '. ${'img_w_'.$i};
echo ' 高度 = '. ${'img_h_'.$i};
endforeach;
只有循环的第一次迭代输出了值。这是我得到的结果:
宽度 = 312 高度 = 246 宽度 = 高度 = 宽度 = 高度 =
我想要得到的是
宽度 = 312 高度 = 246 宽度 = 485 高度 = 442 宽度 = 380 高度 = 289
我已经创建了一个[Codepad][1]以更好地说明。
我漏掉了什么?
[1]: http://codepad.org/zTQzBCSP
英文:
With this code:
$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;
only the first iteration of my loop is outputting values. This is what I get:
Width = 312 Height = 246 Width = Height = Width = Height =
What I want to get is
Width = 312 Height = 246 Width = 485 Height = 442 Width = 380 Height = 289
I've created a Codepad to illustrate better.
What am I missing?
答案1
得分: 1
尝试这个
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 和 2
,但你实际上追加了 0, ., j, p, g
。
根据注释:
substr($image, 0, 1)
等同于
$i
但你的代码实际上在图像名称的字母上进行迭代。
英文:
Try this
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;
You want to append 0, 1 and 2
but you was appending 0, ., j, p, g
.
According with comments:
substr($image, 0, 1)
is equal
$i
but your code was iterating over letters in names of images.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论