像
array(a, b, c, d, e);
我想向它添加新元素,但是将最大元素数保持为5.因此,如果在添加计数超过5之后,我想从开始删除元素,直到数组的大小再次为5。 / p>
答案 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_slice
Docs:
<强>输入:强>
$arr = range('a', 'c');
$new = 'f';
$highest = 4;
<强>代码:强>
$arr = array_slice($arr, -$highest);
$arr[] = $new;
array_slice
注意将数组限制为最后4个元素,然后添加新元素。
如果数组少于4个元素,则不会删除任何元素,因此只添加新元素。
答案 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');