php - 如何在数组的 3 个级别中搜索?
问题描述
我有一个 Laravel 项目并且有 JSON 文件,并且想要在数组的第 3 级中搜索并在日期数组范围内返回第 1 级数组
我使用这个功能:
public function search3($array, $key, $value){
$results = array();
if (is_array($array)) {
if (isset($array[$key]) && $array[$key] == $value) {
$results[] = $array;
}
foreach ($array as $subarray) {
$results = array_merge($results, self::search3($subarray, $key, $value));
}
}
return $results;
}
并返回结果但不给我这个数组
我想要函数返回这个数组的父级的父级在哪里:
解决方案
我希望我能正确理解这一点;我认为您想在数组的第三级中搜索 'from' + date 或 'to' + date 组合,然后返回匹配的酒店(比匹配数据高两个级别)给定的组合。
这个怎么样?
function search3($hotels, $key, $value){
$results = array();
foreach ($hotels as $hotelKey => $hotelProperties) {
foreach ($hotelProperties['availability'] as $availabilityKey => $range) {
if (isset($range[$key]) && $range[$key] == $value) {
$results[$hotelKey] = $hotels[$hotelKey];
}
}
}
return $results;
}
查找在给定日期范围内可用的酒店的更新,给定从和到日期:
function search3($hotels, $from, $to){
$format = 'd-m-Y';
$from = DateTime::createFromFormat($format, $from);
$to = DateTime::createFromFormat($format, $to);
$results = array();
foreach ($hotels as $hotelKey => $hotelProperties) {
foreach ($hotelProperties['availability'] as $range) {
$availableFrom = DateTime::createFromFormat($format, $range['from']);
$availableTo = DateTime::createFromFormat($format, $range['to']);
if ($from >= $availableFrom && $to <= $availableTo) {
$results[$hotelKey] = $hotelProperties;
}
}
}
return $results;
}
推荐阅读
- python - 使用 pykafka 读取特定记录
- javascript - 访问 JSON 文件中的子树
- string - 在空格上拆分字符串但忽略双引号之间的部分
- rest - 调用函数角度后无法将状态值从 0 切换到 1
- cmd - 从命令行安装 RabbitMQ 服务器
- database - Grafana 监控活动数据库会话 - 动态
- makefile - 如何在 u-boot 源代码中生成为特定板配置编译的源文件列表?
- ios - 如何在滚动底部不反弹的情况下在滚动底部加载更多数据?
- javascript - Framework7 v2 日历实例
- angular - 构建Angular应用程序时找不到模块'node-sass'