匹配数组

时间:2015-07-07 15:20:07

标签: php arrays

我正在使用以下内容在'for'循环中构建数组:

$output[] = array('title' => $title, 'start' => $startClean, 'end' => $endClean, 'url' => $url);

我需要对此进行声明,如果标题和开始日期已经在数组中,那么它会跳过上面的行。很高兴在阵列中寻找一个元素 - 不太确定两个......

谢谢:)

2 个答案:

答案 0 :(得分:1)

这应该适合你:

只需使用array_reduce()并检查您是否已经拥有相同标题值和相同起始值的元素,如下所示(其中$titleCheck$startCheck是当前迭代的值):

if(array_reduce($output, function($keep, $v)use($titleCheck, $startCheck){
    if($v["title"] == $titleCheck && $v["start"] == $startCheck)
        $keep = TRUE;
    return $keep;
}, FALSE)) {
    $output[] = array('title' => $title, 'start' => $startClean, 'end' => $endClean, 'url' => $url);
}

答案 1 :(得分:0)

一种方法是使用由标题和日期$title.$start组成的键创建数组,以便只有一个。所以在循环中:

$output[$title.$start] = array('title' => $title, 'start' => $startClean, 'end' => $endClean, 'url' => $url);

这将有效地产生最后一次出现的标题和日期。如果您想要第一次出现,您可以根据重要的标准反过来排序。 然后,如果你想在之后删除那些键(可选):

$output = array_values($output);