in_array() 期望参数 2 是数组,给定整数

bfl*_*ign 3 php arrays

我想创建每个事件的第一个日期的概述。所以事件标题必须是唯一的。我的想法是创建一个辅助函数,在其中我循环查询的结果并检查每个项目的标题。为了确保每个标题只通过一次,我想将标题推入一个数组 ($checklist)。如果它不存在,我将该项目添加到结果数组中。如果是,请继续下一项。

我总是收到错误:

in_array() expects parameter 2 to be array, integer given
Run Code Online (Sandbox Code Playgroud)

这是我的代码:

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;
}
Run Code Online (Sandbox Code Playgroud)

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

我需要改变什么?

Gra*_* S. 5

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

if (!in_array($title, $checklist)) {
    $checklist[] = $title;
    $result[] = $item;
}
Run Code Online (Sandbox Code Playgroud)

  • 事实上,array_push 文档建议在您仅附加一项时以这种方式执行此操作。 (2认同)