在本练习中,我试图创建一个包含for循环和if语句的框。我很困惑,不确定代码的哪一部分是错误的。 $ aboxwidth值1和4会以某种方式重复两次。
用空格替换0时,输出如下:
output:
+0-0-0+0
|000|0
|000|0
+0-0-0+0
code:
<?php
//box builder
$iboxheight=4;
$aboxwidth=4;
// +-----------+
// | |
// | |
// | |
// +-----------+
// +--+
// | |
// | |
// +--+
//building boxheight
for ($i=1; $i <= $iboxheight; $i++) {
//$boxwidth
for ($a=1; $a <= $aboxwidth; $a++) {
//build + in corners
if (($i === 1 && $a === 1) || //corner top left
($i === 1 && $a === $aboxwidth) || // corner top right
($i === $iboxheight && $a === 1) || // corner bottom left
($i === $iboxheight && $a === $aboxwidth)) { // corner bottom right
echo "+";
}
//build top and bottom
if ($i === 1 || $i === $iboxheight) {
if ($a !== 1 && $a !== $aboxwidth) {
echo "-";
}
}
//build walls
if ($a === 1 || $a === $aboxwidth) {
if ($i !== 1 && $i !== $iboxheight) {
echo "|";
}
}
if ($i !== 1 || $i !== $iboxheight) {
if ($a !== 1 || $a !== $aboxwidth) {
echo "0";
// echo " ";
}
}
}
echo "<br>";
}
对于任何提示和建议,我深表感谢。 谢谢
答案 0 :(得分:1)
该程序将echo "0";
$i
和$a
的{em}。为什么会这样?
此($i !== 1 || $i !== $iboxheight)
始终为true 。并且$a !== 1 || $a !== $aboxwidth
总是 。当$ i为1时,它不等于$ iboxheight,因此为true。当$ a为1时,它不等于$ aboxwidth,因此为true。等等。程序echo
的每次迭代都为0。
(您可以尝试使用echo "($i,$a)";
代替echo "0";
来查看实际效果)。
如果将||
更改为&&
,它将达到预期的结果,即,当(行,列)不在“边界”上时,仅回显{whatever}。