-1

我需要打印这个:

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>";
} 

错了哈哈,你能帮帮我吗?

4

3 回答 3

1

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

循环遍历字符串中的字符,在适用的情况下添加前面的字母,将它们添加到数组中。然后,您可以删除$wordusing的重复字符串,该字符串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;
于 2013-06-08T15:40:19.490 回答
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>";
} 
于 2013-06-08T15:48:55.930 回答
0
  1. 在这里,循环应该运行的次数for是单词的 2*length 减一。
  2. 打印的字符数继续增加,直到您打印整个单词一次,然后开始减少。

所以代码变成了:

    $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. 尝试练习一些图案打印问题!:-)
于 2013-06-08T15:51:17.850 回答