解决方案不同使用for循环与两个增量php

时间:2013-06-08 15:16:47

标签: php

我需要打印这个:

l
li
lik
like
lik
li
l

但使用两个增量的for循环!好吧基本上我是这样做的!

$word = 'like';

for($i=0,$j=7;$i<7;$i++,$j--){
    print substr($word, 0,$i)."<br>";
} 

这是错的哈哈,你能帮助我吗?

3 个答案:

答案 0 :(得分:1)

您可以稍微清理一下这段代码,但据我所知,最好的方法如下:

循环遍历字符串中的字符,在适用的位置添加前面的字母,将它们添加到数组中。然后,您可以使用$word删除array_pop的重复字符串,该字符串将从阵列中删除最后一个对象。从那里,您需要使用array_reverse()反向生成数组的副本,然后implode()使数组转换为字符串。使用<br />以便数组中的每个字符串都将打印在一个新行上。

我并不特别关心这是否是你的作业,正如@Madara Uchiha所建议的那样,但它只是帮助我进一步了解PHP。

$word = "like";

$order = array();
for ($i = 0; $i < strlen($word); $i++) {
    if ($i == 0) {
        $order[] = $word[$i];
    }
    else {
        $str = "";
        for ($j = 0; $j <= $i; $j++) {
            $str .= $word[$j];
        }
        $order[] = $str;
    }
}

$backwards = array_reverse($order);
array_pop($order);
$string = implode("<br />", array_merge($order, $backwards));
echo $string;

答案 1 :(得分:0)

$word = 'like';

for($i = 0, $x = $cnt = strlen($word); $i <= $cnt*2; $i++){
    if($i <= $cnt)
        print substr($word, 0,$i)."<br>";
    else
        print substr($word, 0, --$x)."<br>";
} 

答案 2 :(得分:0)

  1. 此处,for循环应运行的次数,是一个小于2 *长度的单词。
  2. 打印的字符数继续增加,直到您打印整个单词一次,然后开始减少。
  3. 所以代码变成:

        $word = 'like';
        $length = strlen($word);
    
        for($i=1, $j=1; $i < ($length*2) ; $i++ )
        {
            print substr($word, 0, $j)."<br>";
            if($i < $length)
                $j++;
            else
                $j--;
        }
    

    一些提示:

    1. 尽可能避免在程序中使用常量。 (您在代码中使用了7,当输入单词发生更改时会中断!)
    2. 尝试练习一些图案打印问题! : - )