PHP - 两行代码多次打印字符串

问题描述 投票:0回答:4

我需要一些关于 PHP 课程中设置的练习的指导。我尝试了很多不同的方法,但没有一个能够满足要求。任务是执行以下操作:

先决条件:

  1. 不使用任何循环变体
  2. 没有任何字符串重复变化
  3. 没有字符串连接功能
  4. 没有 require 声明
  5. 仅使用4行代码

    • 值得注意的是,每个语句必须独占一行,并且
      <?php
      ?>
      标签各算作一行。

输出:打印以下文本200次

“只工作不玩耍让杰克成为一个迟钝的男孩。”

我假设它需要使用 while 循环,但我已经用尽了我的 PHP 知识,根本无法想出解决方案。我不一定只是为了指出正确的方向而寻找答案。

谢谢你。

php recursion counter repeat
4个回答
2
投票

不确定我是否得到它,但这是我的尝试......

function printsth ($count) {
    echo $count++, "All work and no play makes jack a dull boy.<br>", $count <= 200 ? printsth($count++) : "";
}
printsth(1);

更干净的版本

function printsth ($count) {
    echo "All work and no play makes jack a dull boy.<br>", $count++ < 200 ? printsth($count++) : "";
}
printsth(1);

1
投票

给你:

$i = 0;
while ($i++ < 200){
    echo("All work and no play makes jack a dull boy.");
}

1
投票

这是我的解决方案,使用递归和匿名函数(只是为了好玩)。

$rec = function($iteration, $text) use (&$rec) {
    return $iteration == 200 ? '' : $text .= $rec(++$iteration,"All work and no play makes jack a dull boy.\n");
};
echo $rec(1,'');

1
投票

好吧,既然你可以使用数组,这使得它相对简单:

我建议仅浏览此页面并查看您可以使用哪些功能:https://secure.php.net/manual/en/ref.array.php

如果想法是使用递归函数,那么这个解决方案就达不到目的,也许老师会希望将来限制使用除 echo/print 之外的任何内置 php 函数。

如果

array_fill()
可以接受,则第一个解决方案:

<?php
echo implode( "<br/>\n", array_fill(0, 200, "All work and no play makes jack a dull boy.") );

如果您不能使用

array_fill()
并且似乎
<?php
被认为是四行要求之一,那么这是这个意大利面条:

<?php
a: (isset($i)?++$i:$i=0);
echo "<!-- $i --> All work and no play makes jack a dull boy.<br/>\n";
if ( $i < 199 ) goto a;

...如果第 2 行被禁止,那么我会这样说:

<?php
a:
echo "<!-- ".(isset($i)?++$i:$i=0)." --> All work and no play makes jack a dull boy.<br/>\n";
if ( $i < 199 ) goto a;
© www.soinside.com 2019 - 2024. All rights reserved.