php – 如何在子数组中搜索值并了解该子数组的键索引

发布时间:2022-04-30 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了php – 如何在子数组中搜索值并了解该子数组的键索引脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个这种结构的数组:

$months = array(
     MM => array(
         'start' => DD,'end'   => DD,'tyPE'  => (string),'amount'=> (float),),);

MM是一个月(01-12,字符串),DD是一个月中的一天(01-31,字符串).
并非所有月份都在阵列中.对于每个月,存在可变数量的子阵列,每个子阵列具有唯一的天数.例如,一个月有三个具有三个天数范围的子阵列,但这些范围中使用的天数永远不会重叠或重复,每个DD值都是唯一的.唯一的例外是在某些范围内“开始”和“结束”可能重合(同一个DD日),但每个月永远不会有两个相同的“开始”日或两个相同的“结束日”.

我需要在每个月内循环几个月和几天时使用此数组.在循环每月的每一天时,我需要检查特定日期是否在“开始”或“结束”中匹配.如果匹配为真,我还需要检索相邻的值.

在这样做时,我遇到了一个问题:如何知道子阵列的关键索引?例如,我如何知道匹配是否开启

$months['09'][3]['start'] == $current_day_in_loop;

更确切地说:

$months['09'][6]['start'] == $current_day_in_loop;

还是另一把钥匙?

由于我不知道每个月有多少范围,因此索引键是可变的,或者可能根本没有.如何找到匹配值是否在键[3]或[6]上?一旦我知道了密钥,我就可以用它来查找同一子阵列中的相邻值.

解决方法

您可以执行过滤器以确定哪些天匹配:

$matches = array_filter($months['09'],function($ITem) use ($current_day_in_loop) {
    return $item['start'] == $current_day_in_loop;
});
// if $matches is empty,there were no matches,etc.
foreach ($matches as $index => $item) {
    // $months['09'][$index] is the item as well
}

脚本宝典总结

以上是脚本宝典为你收集整理的php – 如何在子数组中搜索值并了解该子数组的键索引全部内容,希望文章能够帮你解决php – 如何在子数组中搜索值并了解该子数组的键索引所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。