如何在while循环中回显一些代码?

时间:2014-04-11 02:27:29

标签: php loops while-loop

我一直在思考几个小时,但我仍然无法为此获得解决方案

基本上我想做的是在一段时间内回显一个分隔符,它应该是这样的

$num = 1;
while($num < 3){

echo 'dog';

//function to stop while
echo 'separator';
//function to continue while

echo 'cat';

$num++;
}

我想获得此输出

dog
dog
dog
separator
cat
cat
cat

我不知道我是否解释得很好,但希望你理解。非常感谢你提前。

更新:我知道我可以使用2而不是函数来实现这个功能但是可以只使用一个函数吗?

7 个答案:

答案 0 :(得分:2)

绝对是的,你可以用一个〜函数。 :)

function OnlyOneWhileFunction($echoThis, $howManyTimes){
    $i = 1;
    while($i <= $howManyTimes){
        echo $echoThis."\r\n";
        $i++;
    }
}

OnlyOneWhileFunction('dog', 3);
echo 'separator';
OnlyOneWhileFunction('cat', 3);

答案 1 :(得分:1)

$num = 0;
$dogs = '';
$cats = '';
$seperator = 'seperator';
while($num < 3){

$dogs .= 'dog';

$cats .= 'cat';

$num++;
}
echo $dogs . $seperator . $cats;

保存每只狗和猫的输出,然后结束。

答案 2 :(得分:1)

替代解决方案:

$items = array_reverse(array("cat","dog"));
$output = array();

while(count($items) > 0)
{
    $item = array_pop($items);
    $output[] = implode("\n", array_fill(0, 3, $item));
}

echo implode("\nseparator\n", $output);

您可以将\n替换为<br>以获取HTML输出(或使用nl2br)。

答案 3 :(得分:0)

以下代码应该有效:

$num = 0;
while($num <= 6){
    if($num < 3)         echo 'dog<br/>';
    else if($num == 3)   echo 'separator<br/>';
    else                 echo 'cat<br/>';
    $num++;
}

答案 4 :(得分:0)

试试这个:

<?php
$num = 0;
while($num < 7){
if($num < 3)
echo 'dog';
elseif($num == 3)
echo 'separator';
elseif($num>3)
echo 'cat';
echo "<br>";
$num++;
}
?>

答案 5 :(得分:0)

最好使用C样式for循环和函数调用:

$recho = function($out, $limit) {
    for ($x=0; $x<$limit; $x++) {
        echo $out . "\n";
    }
}

$recho('dog',3);
echo "seperator\n";
$recho('cat',3);

将其放在网页上的<pre>内以获取换行符,或将"\n"替换为<br>代码。

答案 6 :(得分:0)

如果你想要n个选项并假设每个选项迭代次数相同,那么这是另一种方法。我做了一些清理,但这是一种快速而肮脏的方法:

<?php

/**
 * Loops items with separator every nth time
 * @param array list of items
 * @param integer number of iterations
 * @param string separator text
 */
function loopItemsWithSeparator(array $items, $count, $separator) {

    $items = array_reverse($items);
    while(!empty($items)) {
        $item = array_pop($items);
        for($i = 0; $i < $count; $i++) {
            echo $item . "\n";
        }

        if (count($items) > 0) {
            echo($separator . "\n");
        }
    }

}

loopItemsWithSeparator(array('dog', 'cat', 'bird'), 3, 'separator');

?>