PHP在数组中添加新的一次元素并删除最后一次

时间:2017-09-11 23:10:30

标签: php arrays

我想在数组中始终保留三个元素。所以,我想如果在数组中添加新元素,那么最旧的元素将从数组和重新索引数组中删除。哪种方式最好,最快捷?

这是我的第一个数组

$foo = array(

    'when', // [0]
    'whom', // [1]
    'what' // [2]

);

如果添加了新元素“how”,我想修改如下。

$foo = array(

    'how', // [0]
    'whom', // [1]
    'what' // [2]

);

4 个答案:

答案 0 :(得分:0)

PHP有许多内置的数组函数,包括array_unshift,允许您在开头添加元素,array_pop允许您从末尾删除元素:

array_unshift($foo, 'how'); // Add to the beginning
array_pop($foo); // Remove from the end

示例:https://eval.in/859692

答案 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"
}