Php 如何比较不同定义键中相同值的多维数组
我找不到以下任务的任何解决方案-请帮助: 如果DTEND==DTSTART,其中摘要名称是相同的,则我希望获得多维数组的以下结果: 排列 匹配: 结束:[0][DTEND][value]=20180219-[SUMMARY]=James Brown AB123-不同,无法加入 开始:[2][DTSTART][value]=20180219-[SUMMARY]=>Bob Marley DE456-不同,不能加入 匹配: end:[3][DTEND][value]=20181230-[SUMMARY]=Elvis Presley FG789-相同,可以加入Php 如何比较不同定义键中相同值的多维数组,php,Php,我找不到以下任务的任何解决方案-请帮助: 如果DTEND==DTSTART,其中摘要名称是相同的,则我希望获得多维数组的以下结果: 排列 匹配: 结束:[0][DTEND][value]=20180219-[SUMMARY]=James Brown AB123-不同,无法加入 开始:[2][DTSTART][value]=20180219-[SUMMARY]=>Bob Marley DE456-不同,不能加入 匹配: end:[3][DTEND][value]=20181230-[SUMMA
开始:[4][DTSTART][value]=20181230-[SUMMARY]=>埃尔维斯·普雷斯利-相同,可以加入基于您的示例,这应该有效
$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);
我认为这个问题没有现成的解决办法。我想你只需要试着自己解决它,然后如果你被难倒了,发布你尝试过的代码,然后我们就可以帮助你。这正是我的问题,我还没有找到任何类似的东西可以满足我的需要。。。
$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);