我正在使用以下内容在'for'循环中构建数组:
$output[] = array('title' => $title, 'start' => $startClean, 'end' => $endClean, 'url' => $url);
我需要对此进行声明,如果标题和开始日期已经在数组中,那么它会跳过上面的行。很高兴在阵列中寻找一个元素 - 不太确定两个......
谢谢:)
答案 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);