Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/238.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何比较不同定义键中相同值的多维数组_Php - Fatal编程技术网

Php 如何比较不同定义键中相同值的多维数组

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

我找不到以下任务的任何解决方案-请帮助: 如果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-相同,可以加入
开始:[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);