php - 为什么方法不返回值?
问题描述
我有两种方法。get_value_from_raw_data 方法,如果通过键找到,应该返回一个值,但它总是返回 false。
public function get_value_from_raw_data($associative_key , $haystack) {
foreach ($haystack as $key => $value) {
if (! is_array($value)) {
if ($key === $associative_key) {
return $value;
} else {
continue;
}
} else if (is_array($value)) {
$this->get_value_from_raw_data($associative_key , $haystack[$key]);
}
}
return false;
}
private function convert_value($value) {
$new_value = $this->get_value_from_raw_data($value['associative_key'] , $this->raw_data);
if ($value['path_to'] !== "") {
$paths = explode('.' , $value['path_to']);
$temp = &$this->used_model;
foreach ($paths as $key) {
$temp = &$temp[$key];
}
$temp[$value['key_name']] = $new_value;
} else {
$this->used_model[$value['key_name']] = $new_value;
}
}
另外,如果我在返回之前在此方法中使用 dd ,那么它会显示该值,并且在返回之后它已经消失了。
解决方案
当您对函数进行递归调用时,您不会返回值:
else if (is_array($value)) {
$this->get_value_from_raw_data($associative_key , $haystack[$key]);
}
应该:
else if (is_array($value)) {
return $this->get_value_from_raw_data($associative_key , $haystack[$key]);
}
推荐阅读
- java - 写入后如何等待firebase的响应
- spring - 控制器或 RestController
- java - 在 Eclipse IDE 中运行没有包的 Java 代码
- reactjs - 使用 TypeScript 反应 Refs:无法读取未定义的属性“当前”
- java - 在排序方法中使用匿名类
- ios - 使用 Xcode 10.1 + Carthage 在同一个 Cartfile 中构建 Alamofire 和 Texture 时出错
- mysql - 找不到程序失败的地方
- ocaml - ocaml 上的 Z3 绑定
- php - 当日期存储在数据库中时,启用从输入类型 = 日期禁用特定日期
- mips32 - 地址超出范围的 MIPS 程序集