【问题标题】:How to achieve below logic with php如何用php实现以下逻辑
【发布时间】:2014-02-09 05:15:31
【问题描述】:

我需要输出如下:

  1234
  123
  12
  1
  12
  123
  1234

我的尝试

<?php
$n=4;


for($i=1;$i<=$n;$i++){
    for($j=$i;$j<=$n;$j++){
       if($i==4){
        echo $j-3;
     }
    else if($i==2){
       echo $j-1;
     }
    else if($i==3){
      echo $j-2;
    } else {
       echo $j;
      }
    }
        echo "<br>";
}
for($i=4;$i>=1;$i--){
    for($j=$i;$j<=$n;$j++){
       if($i==4){
        echo $j-3;
     }
    else if($i==2){
       echo $j-1;
     }
    else if($i==3){
      echo $j-2;
    } else {
       echo "";
      }
    }
     echo "<br>";
}

谁能建议我实现上述逻辑的最佳方法。

【问题讨论】:

  • 听起来像是家庭作业
  • @IgnacioVazquez-Abrams 我试过了,我会更新问题
  • @sickest:工作就是工作,无论我们是在家里还是办公室。
  • @IgnacioVazquez-Abrams:您能建议我实现它的最佳方法吗?
  • 很高兴看到您的尝试。您的代码非常接近正确的输出。但是,您打印 1 两次 - 如果您尝试缩短第一个循环 $i &lt; n,您会发现您得到了正确的输出。话虽如此,您的解决方案相当混乱,您可以按照我在回答中的建议尝试编写更清洁的方法。

标签: php logic


【解决方案1】:

这里有一个想法:把它当作一个字符串而不是一个数字,每次只打印出前x个数字。

即,整个字符串可能是“1234”,您分别打印出前 4、3、2、1、2、3、4 个字符。

因为这听起来像是一个家庭作业问题,所以我不会提供完整的答案,但这里有一些参考资料可能会对您有所帮助。

http://www.php.net/manual/en/control-structures.for.php

http://au1.php.net/substr

【讨论】:

    【解决方案2】:

    你有你的输入(“1234”),你只需要2个for/foreach循环,从n-1迭代到0,另一个从1到n-1,当你做for/foreach时,只需给他们您所拥有的输入的子字符串即可。

    这就是你需要做的一切

    【讨论】:

    • 谢谢,我试试看。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-04
    • 1970-01-01
    • 2022-09-25
    • 2020-05-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多