从数组中删除最旧的元素

时间:2011-11-20 13:00:55

标签: php arrays

array(a, b, c, d, e);

我想向它添加新元素,但是将最大元素数保持为5.因此,如果在添加计数超过5之后,我想从开始删除元素,直到数组的大小再次为5。 / p>

9 个答案:

答案 0 :(得分:3)

array_slice会帮助您

   $array = array('a','b','c','d','e');
    $array[] = 'f';

    if(count($array) > 5)
        $array = array_slice($array,count($array)-5);

    var_dump($array);

可重复使用的功能

function add_array_max(&$array,$item,$max)
    {
        $array[] = $item;
        if(count($array) > $max)
            $array = array_slice($array,count($array)-$max); 
    }

    add_array_max($array,'g',5);
    add_array_max($array,'h',5);
    add_array_max($array,'i',5);
    add_array_max($array,'j',5);

    var_dump($array);

答案 1 :(得分:3)

根据我的建议,我使用了array_sliceDocs

<强>输入:

$arr = range('a', 'c');
$new = 'f';
$highest = 4;

<强>代码:

$arr = array_slice($arr, -$highest);
$arr[] = $new;

array_slice注意将数组限制为最后4个元素,然后添加新元素。

如果数组少于4个元素,则不会删除任何元素,因此只添加新元素。

Demo

答案 2 :(得分:2)

function add($array,$item) {
  array_push($item);
  while(count($array)>5) array_shift($array);
}

答案 3 :(得分:2)

在数组中添加元素并检查以下条件

if(count($arr) >= 5) {
   array_shift($arr); //remove element from beginning
}

答案 4 :(得分:1)

尝试使用array_pad功能。 (见http://www.php.net/manual/en/function.array-pad.php) 或array_slice(请参阅http://www.php.net/manual/en/function.array-slice.php

答案 5 :(得分:1)

使用循环缓冲区,覆盖旧元素并记住“第一个”的索引。

add_element (k)
  a [first] = k;
  first = (first + 1) % 5

access_element (i)
  return a [(first + i) % 5]

答案 6 :(得分:1)

您可以使用此代码:

$array = array('a', 'b', 'c', 'd', 'e');
$newElems = array ('f', 'g', 'h');

foreach($newElems as $elem)
{
   array_shift($array);
   array_push($elem);
}

它的工作原理如您所见:http://codepad.org/DH2UUuTY

答案 7 :(得分:1)

来自http://php.net/manual/en/language.types.array.php

  

unset()函数允许从数组中删除键。意识到   数组不会重新编制索引。如果是真正的“移除和转移”行为   需要,可以使用array_values()重新索引数组   功能

以下是一个例子。

答案 8 :(得分:1)

试试这个:

if(count($array) >= 5)) { array_pop($array); }
array_push($array, 'whatever');