PHP多维数组查找:根据ICS解析数组的日期值返回对应键路径
用PHP从ICS解析数组中按日期匹配对应值的解决方案
我来帮你搞定这个需求~根据你描述的数组结构信息,咱们可以通过遍历多维数组的方式,精准匹配日期并返回对应的值,具体实现如下:
思路说明
因为你的数组是多维结构(顶层是[a][b]这类键,每个键下同时存在唯一的[foo]日期和[bar]对应值),array_search或in_array这类函数更适合一维数组查找,所以咱们直接遍历每个顶层条目,配对日期和对应值即可。
代码实现
// 模拟ICS解析后的数组结构(根据你的描述还原) $icsParsedArray = [ "a" => [ "foo" => ["19-03-2018"], "bar" => ["bar a"] ], "b" => [ "foo" => ["20-03-2018"], "bar" => ["bar b"] ] ]; // 定义匹配函数:输入日期,返回对应bar值 function getCorrespondingBarValue($targetDate, $dataArray) { // 遍历每个顶层条目 foreach ($dataArray as $entry) { // 取出当前条目的日期(foo内值唯一,直接取第一个元素) $currentDate = $entry["foo"][0]; // 严格匹配日期,避免隐式转换问题 if ($currentDate === $targetDate) { // 返回对应的bar值 return $entry["bar"][0]; } } // 未找到匹配日期时返回默认值(可根据需求调整) return "未找到对应值"; } // 调用函数测试 $matchedValue = getCorrespondingBarValue("19-03-2018", $icsParsedArray); echo $matchedValue; // 输出:bar a
细节补充
- 这里用了**严格相等(
===)**来匹配日期,避免字符串和其他类型的隐式转换问题; - 因为你提到
[foo]和[bar]内的值唯一,所以不用处理多个匹配的情况,找到第一个匹配就可以直接返回,效率很高; - 如果你的实际数组结构中,foo/bar的数组索引不是
[0],只需要调整对应的索引即可,核心逻辑不变。
内容的提问来源于stack exchange,提问作者johannesbe_
相关产品推荐
相关产品推荐

