【发布时间】:2021-08-22 19:58:15
【问题描述】:
我不明白为什么 foreach 只返回 $even_values 数组中的第一个值:
这是我在 fibonacci_sequence 方法上打印可读时 $this->sequence 数组的值:
Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 5 [4] => 8 [5] => 13 [6] => 21 [7] => 34 [8] => 55 [9] => 89 )
所以我尝试在even_values 方法上使用来自fibonacci_sequence 方法的返回数组。
这里是完整的代码:
class fibonacci {
private $seq_limit;
private $sequence = array(1,2);
private $even_values = array();
public function __construct(int $seq_limit){
$this->seq_limit= $seq_limit;
}
public function fibonacci_sequence(){
for ($i=0; $i<=$this->seq_limit-3; $i++) {
$this->sequence[] = $this->sequence[$i] + $this->sequence[$i+1];
}
return $this->sequence;
//print_r($this->sequence);
}
public function even_values(){
foreach ($this->sequence as $value) {
if ($value % 2 == 0) {
$this->even_values[] = $value;
}
}
//return $this->even_values;
print_r($this->even_values);
}
}
$fibonacci = new fibonacci(10);
$fibonacci->even_values();
【问题讨论】:
-
$this->sequence是一个值为 1 和 2 的数组。这两个数组中只有一个是偶数,因此您只能将其中一个 (2) 添加到this->even_values,即输出。你有什么疑问? -
你是不是想在某个时候给
fibonacci_sequence打电话?
标签: php arrays class methods foreach