PHP for循环只运行一次


PHP for loop only runs once

我一直在代码学院学习php课程。在其中一个练习中,我尝试实现一个条件函数,其中它将使用一个参数来表示函数的运行次数。不幸的是,它没有运行。我试着用树皮(2)跑两次树皮()。它只回响一次。我试过"做一段时间"、"如果"answers"为了"。没有任何效果。为什么?

<?php
   class Dog{
        public $numLegs = 4;
        public $name;
        public $speak = "Woof!";
  public function bark($up){
      $counter = 0;
      for($counter; $counter!=$up;$counter++){
      return $this->speak;
      }
  }
  public function greet(){
      return "Hello " . $this->name . "!" . "<br />";
  }
   public function __construct($name){
       $this->name = $name;
    }
   }
   $dog1 = new Dog("Barker");
   $dog2 = new Dog("Amigo");
   echo $dog1 -> bark(2);
   echo $dog2 -> name;
?>

返回$this->speak时,一旦返回值,整个函数就会停止执行。

你可以做一些类似的事情:

public function bark($up){
    $counter = 0;
    $return = '';
    for($counter; $counter<$up;$counter++){
        $return .= $this->speak;
    }
    return $return;
}

要添加另一个解决方案,根本不使用for,请使用array_fill()创建所需大小和内容的数组(因为它总是相同的文本),然后简单地使用implode()接收字符串作为结果。

public function bark($up){
    return implode(array_fill(1, $up, $this->speak));
}

for循环内的returnbark函数中退出。所以狗只叫一次。

public function bark($up){
      $counter = 0;
      for($counter; $counter!=$up;$counter++){
         echo $this->speak;
      }
  }
$dog1 -> bark(2);

您必须更改这些行:

return $this->speak;

收件人:

echo $this->speak;

echo $dog1->bark(2);

收件人:

dog1->bark(2);

return语句立即停止该方法,这就是您只得到一个echo 的原因

您想要做的是在for循环中运行bark函数,而不是在bark函数中运行for循环。

public function bark(){
  return $this->speak;
}
for($i = 0; $i < 2; $i++){
  echo $dog1 -> bark();
}

树皮函数内部循环的问题主要来自于您失去了很多灵活性。

你可以直接在那里回声,但从对象的方法输出数据远非理想。如果您需要对输出执行某种逻辑,该怎么办?

您也可以在函数中进行连接,但是,如果您需要格式化输出,该怎么办?然后你必须再次分割输出,这违背了目的。