php - 如何比较不同定义键中相同值的多维数组
问题描述
我找不到以下任务的任何解决方案 - 请帮助:如果 DTEND==DTSTART 其中SUMMARY-NAME相同(相似),我想获得多维数组的以下结果:
大批 (
[0] => Array
(
[DTEND] => Array
(
[value] => 20180219
[type] => DATE
)
[DTSTART] => Array
(
[value] => 20190220
[type] => DATE
)
[SUMMARY] => James Brown (AB123)
)
[1] => Array
(
[DTEND] => Array
(
[value] => 20180708
[type] => DATE
)
[DTSTART] => Array
(
[value] => 20180704
[type] => DATE
)
[SUMMARY] => Johnny Cash (xy987)
)
[2] => Array
(
[DTEND] => Array
(
[value] => 20180225
[type] => DATE
)
[DTSTART] => Array
(
[value] => 20180219
[type] => DATE
)
[SUMMARY] => Bob Marley (DE456)
)
[3] => Array
(
[DTEND] => Array
(
[value] => 20181230
[type] => DATE
)
[DTSTART] => Array
(
[value] => 20181229
[type] => DATE
)
[SUMMARY] => Elvis Presley (FG789)
)
[4] => Array
(
[DTEND] => Array
(
[value] => 20190112
[type] => DATE
)
[DTSTART] => Array
(
[value] => 20181230
[type] => DATE
)
[SUMMARY] => Elvis Presley
)
)
- 匹配:结束:[0][DTEND][value] = 20180219 - [SUMMARY] = James Brown (AB123) - 不同,不能加入
开始:[2][DTSTART][value] = 20180219 - [SUMMARY] => Bob Marley (DE456) - 不同,不能加入
- 比赛:结束:[3][DTEND][value] = 20181230 - [SUMMARY] = Elvis Presley (FG789) - 相同,可以加入
开始:[4][DTSTART][value] = 20181230 - [SUMMARY] => Elvis Presley - 相同,可以加入
解决方案
根据您的示例,这应该可以。
$matches = [];
$count = count($arr);
for ($i = 0; $i < $count; $i++) {
for ($x = $i + 1; $x < $count; $x++) {
// finds " (any uppercase letters or numbers)"
$pattern = '/ \([A-Z0-9]+\)/';
/// remove the numbers within parenthesis and compare summary values
if (preg_replace($pattern, '', $arr[$i]['SUMMARY']) == preg_replace($pattern, '', $arr[$x]['SUMMARY'])) {
if ($arr[$i]['DTEND'] === $arr[$x]['DTSTART'] || $arr[$x]['DTEND'] === $arr[$i]['DTSTART']) {
$matches [] = [$arr[$i], $arr[$x]];
}
}
}
}
var_dump($matches);
推荐阅读
- javascript - 猫鼬种群问题
- java - 在 @beforeMethod 中执行 TestNG 类时出现 java.lang.NullPointerException
- tensorflow - 将 TensorFlow 模型转换为 Keras hdf5
- android - Android 应用已发布,但 google play 显示 URL 未找到
- ios - 复杂的 SwiftUI 视图性能
- flutter - 如何在本地浏览器中打开编译好的 Flutter web index.html?
- python - 自动调整文本小部件的宽度以适合所有文本
- ruby-on-rails - 从 has_many 关联中过滤集合?
- javascript - 使用 Javascript 实现 Live Django Search
- python - 使用 DictReader 且不使用 fieldnames() 方法从 csv 文件中读取标头