将数组限制为 5 个项目

2022-08-30 11:03:36

我有一个代码,每次访问页面时都会向数组中添加一个数字。这些数字存储在 Cookie 中,稍后再检索。

我只想保留数组中最近的5个数字。

如果数组已满(5 个项目)并且必须添加一个新数字,则必须删除最旧的数字,并且必须保留最新的项目

这是我所拥有的:

    $lastviewedarticles = array();

if (isset($_COOKIE["viewed_articles"]) ) {
  $lastviewedarticles = unserialize($_COOKIE["viewed_articles"]);
}

if (!in_array($articleid, $lastviewedarticles)){
    $lastviewedarticles[] = $articleid;
}
setcookie("viewed_articles", serialize($lastviewedarticles));

答案 1

array_slice 返回数组的一个切片

array_slice($array, 0, 5) // return the first five elements

答案 2

首先,我认为,您需要获得数组长度,然后如果长度>或等于5,则删除第一个元素,并将元素添加到数组的末尾。

if (!in_array($articleid, $lastviewedarticles)){
    $count = count($lastviewedarticles);
    if($count>=5)
        array_shift($lastviewedarticles);
    $lastviewedarticles[] = $articleid;
}