【问题标题】:My next loop doesn't start我的下一个循环没有开始
【发布时间】:2017-08-09 02:27:10
【问题描述】:

我尝试创建一个创建一些三角形的函数。

<pre>
<?php
$angka = isset($_POST['angka']) ? $_POST['angka'] : "0";
if ($angka)
{
  $segitiga = "";
  $max = $angka + $angka - 1;
  $ctr = 0;
  for ($i=1; $i<=$angka; $i++){
    echo $i;
    for ($j=1;$j<=$max;$j++){
      if ($i = $j){
      if($j<=$angka){
        $ctr++;
      }elseif($j>$angka){
        $ctr--;
      }
        echo " ". $ctr * $ctr;
      }else{
        echo " ";
      }
    }
    echo ""."<br>";
  }
}
?>
</pre>

for ($i=1; $i&lt;=$angka; $i++) 的行是停止。它只运行一次。

下一个$i 没有运行。没有下一个$i

其实我想把它做成一个函数,但这还是不行。

【问题讨论】:

  • $angka的值是多少?
  • 清理你的代码。删除注释掉的代码,并提供详细信息,例如$angka 的值,以便我们提供帮助。
  • 它现在可以工作了,罪魁祸首是 'if ($i = $j)' 它应该是 'if ($i == $j)' 就像 Brian Putt 说的那样。现在我可以继续我的代码了。
  • 这只是问题的一部分,其他部分看我的回答
  • 你的循环从 1 开始,可能在 0 停止!!!!!!!!!!

标签: php html for-loop


【解决方案1】:

看来这可能是罪魁祸首

if ($i = $j){

应该是

if ($i == $j){

因为您将$i 设置为$j,如果$angka 为1,它将退出for 循环,因为它是$i &lt;=$angka

【讨论】:

  • 非常感谢。又开始用php了,真的要学很多。
【解决方案2】:

这里是固定代码:

<?php
$angka = isset($_POST['angka']) ? $_POST['angka'] : "0";
if ($angka)
{
    $segitiga = "";
    $max = $angka + $angka - 1;
    $ctr = 0;

    for ($i=1; $i<=$angka; $i++){
      echo $i;
      ///*
      for ($j=1;$j<=$max;$j++){
        if ($i == $j){ //NOTICE how this needs to be `==` and not `=`
            if($j<=$angka){
              $ctr++;
            }elseif($j>$angka){
              $ctr--;
            }
            //$segitiga = $segitiga . ($ctr * $ctr);
            echo " ". $ctr * $ctr;
        }else{
            //$segitiga = $segitiga . " ";
            echo " ";
        }
      }
      //*/
      //$segitiga = $segitiga . "\n";

        echo ""."<br>";
    }
    //echo $segitiga;
}
?>

【讨论】:

    【解决方案3】:
    for ($i=1; $i<=$angka; $i++){
    

    您的 $i 从 1 开始并在等于 $angka 的位置停止 其中 $angka 可能是 0 因为

    $angka = isset($_POST['angka']) ? $_POST['angka'] : "0";
    

    这样循环可能永远不会执行,甚至不会执行一次 如果你想测试我在说什么,我正在执行你的代码并手动设置 $angka 并且它运行正常 这是以下代码的output

    $angka =  "3";
    echo "<pre>";
    
    if ($angka)
    {
        $segitiga = "";
        $max = $angka + $angka - 1;
        $ctr = 0;
    
        for ($i=1; $i<=$angka; $i++){
            echo $i;
            echo 'the i loop here'.PHP_EOL;
            for ($j=1;$j<=$max;$j++){
                echo 'the j loop here'.PHP_EOL;
                if ($i == $j){
                    if($j<=$angka){
                        $ctr++;              
                    }elseif($j>$angka){
                        $ctr--;
                    }
                    echo " ". $ctr * $ctr;
                }else{
                    echo " ";
                }
            }
            echo ""."<br>";
        }
    }
    

    【讨论】:

    • 我已经尝试过输入大于1的数字。但是现在问题已经解决了,谢谢您的建议。我应该提到输入大于 1。
    猜你喜欢
    • 2022-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-16
    • 1970-01-01
    • 2015-07-28
    • 2012-10-11
    • 1970-01-01
    相关资源
    最近更新 更多