我想在数组中始终保留三个元素。所以,我想如果在数组中添加新元素,那么最旧的元素将从数组和重新索引数组中删除。哪种方式最好,最快捷?
这是我的第一个数组
$foo = array(
'when', // [0]
'whom', // [1]
'what' // [2]
);
如果添加了新元素“how”,我想修改如下。
$foo = array(
'how', // [0]
'whom', // [1]
'what' // [2]
);
答案 0 :(得分:0)
PHP有许多内置的数组函数,包括array_unshift
,允许您在开头添加元素,array_pop
允许您从末尾删除元素:
array_unshift($foo, 'how'); // Add to the beginning
array_pop($foo); // Remove from the end
答案 1 :(得分:0)
最快的方法您可以增加更多限制..
$array = ['One' => 1, 'Two' => 2, 'Three' => 3, 'Four' => 4, 'Five' => 5];
//selecting First 3 Arrays
foreach (new LimitIterator(new ArrayIterator($array), 0, 3) as $key => $val)
{
echo "$key => $val\n";
}
进行测试
答案 2 :(得分:0)
PHP脚本不是持久性的,因此我建议使用time()
作为每个值的键。然后你就知道先放入哪一个,然后写一个函数来覆盖最旧的。
答案 3 :(得分:0)
<?php
$queue = [];
$queue_length = 3;
$add_item = function($item) use (&$queue, $queue_length) {
array_unshift($queue, $item) &&
count($queue) == $queue_length + 1 &&
array_pop($queue);
var_dump($queue);
};
$add_item('first');
$add_item('second');
$add_item('third');
$add_item('fourth');
$add_item('fifth');
输出:
array(1) {
[0]=>
string(5) "first"
}
array(2) {
[0]=>
string(6) "second"
[1]=>
string(5) "first"
}
array(3) {
[0]=>
string(5) "third"
[1]=>
string(6) "second"
[2]=>
string(5) "first"
}
array(3) {
[0]=>
string(6) "fourth"
[1]=>
string(5) "third"
[2]=>
string(6) "second"
}
array(3) {
[0]=>
string(5) "fifth"
[1]=>
string(6) "fourth"
[2]=>
string(5) "third"
}