Php in_array()要求参数2为数组,给定整数

Php in_array()要求参数2为数组,给定整数,php,arrays,Php,Arrays,我想对每个活动的开始日期进行概述。因此,事件标题必须是唯一的。我的想法是创建一个helper函数,在这里我循环查询结果并检查每个项目的标题。为了确保每个标题只传递一次,我想将标题放入数组($checklist)。如果它不存在,我将该项添加到结果数组中。如果有,请继续下一项 我总是会出错: in_array() expects parameter 2 to be array, integer given 这是我的代码: function showFirstEvenst($collection)

我想对每个活动的开始日期进行概述。因此,事件标题必须是唯一的。我的想法是创建一个helper函数,在这里我循环查询结果并检查每个项目的标题。为了确保每个标题只传递一次,我想将标题放入数组($checklist)。如果它不存在,我将该项添加到结果数组中。如果有,请继续下一项

我总是会出错:

in_array() expects parameter 2 to be array, integer given
这是我的代码:

function showFirstEvenst($collection) {
    $checklist = array();
    $result = array();

    foreach ($collection as $item) {
        $title = strtolower($item['events']['title']);

        if (!in_array($title, $checklist)) {
            $checklist = array_push($checklist, $title);
            $result = array_push($result, $item);
        }
    }

    return $result;
}
我已经尝试在foreach循环中将$checklist和$result转换为数组,但没有结果


我需要更改什么?

这是因为在循环中,您将
$checklist
赋值为
array\u push()
,这将是数组中的新元素数


array\u将元素添加到数组后,push函数将返回数组的计数。所以不要将函数的输出分配给数组

替换

  if (!in_array($title, $checklist)) {
                $checklist = array_push($checklist, $title);
                $result = array_push($result, $item);
            }


添加到@Lawrence Cherone和@Ravinder Reddy的答案中,您可以使用本机数组语法推送到数组,而不是使用
array\u push

if (!in_array($title, $checklist)) {
    $checklist[] = $title;
    $result[] = $item;
}

返回一个整数,在循环中覆盖数组,为什么要使用
array\u push()
???只是
$checklist[]=$title
@AbraCadaver是否性能更高?@bflydesign它不会有很大的区别,但是的,它应该有。在
$array[]=$value
array\u push($value,$array)
的性能方面发现了这个相关的问题:这确实是问题所在……我们并没有寻找它。事实上,array_push文档建议在添加一项时使用这种方法。
if (!in_array($title, $checklist)) {
    $checklist[] = $title;
    $result[] = $item;
}