php - Foreach 只返回数组的第一个值
问题描述
我不明白为什么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 )
所以我试图在fibonacci_sequence
方法上使用even_values
方法的返回数组。
这是完整的代码:
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();
解决方案
您似乎忘记调用该$fibonacci->fibonacci_sequence();
方法来更改$sequence
数组,所以这样做:
$fibonacci = new fibonacci(10);
$fibonacci->fibonacci_sequence();
$fibonacci->even_values();
正如@AbraCadaver 所建议的,如果应该始终填充它,您也可以从构造函数中调用它:
public function __construct(int $seq_value)
{
$this->seq_value = $seq_value;
$this->fibonacci_sequence(); // <---------- ADD HERE
}
推荐阅读
- c# - 具有空格分隔键的 C# Unflatten JSON 对象
- python - Azure devOps 中的 LRE 请求超时
- visual-studio-code - How to disable comment formatting in VS Code?
- python - 如何使用 Python Instaloader 跳过 Instagram Web 检查点
- mariadb - 您的 SQL 语法有错误;检查与您的 MariaDB 服务器版本相对应的手册以获取正确的语法 SQL MOCK SBA 分配
- ethers.js - 如何在 ethers.js ABI 中定义一个结构数组返回类型
- javascript - 日期字段在 pagedlist 的第二页上失去价值
- java - 在 Java 中查询距 AWS DynamoDB 10 英里内的最近位置
- jquery - 如何从模态插入更新值