【问题标题】:PHP: Remove the first and last item of the arrayPHP:删除数组的第一项和最后一项
【发布时间】:2010-04-20 13:03:28
【问题描述】:

假设我有这个数组:

 $array = array('10', '20', '30.30', '40', '50');

问题:

从上述数组中删除第一项的最快/最简单的方法是什么?
从上述数组中删除最后一项的最快/最简单的方法是什么?

所以结果数组只包含这些值:

  • '20'
  • '30.30'
  • '40'

【问题讨论】:

  • 为什么你需要“最快”的呢?你的数组中有多少项?
  • @Col。弹片:考虑一下数组中有更多项目的情况,我认为他刚刚给出了一个样本。
  • 我拒绝考虑这种废话。大型数据数组是数据库的关注点。
  • @Col。 Shrapnel:你是对的,但你会看到很多不需要优化的问题,但人们尤其是新手仍然会提出这样的要求。
  • 因此,他们应该接受过早优化的危险教育。

标签: php arrays


【解决方案1】:

使用array_slice最简单

$newarray = array_slice($array, 1, -1);

如果输入数组中的元素少于 3 个,则输出数组将为空。

【讨论】:

  • 您已将此标记为正确答案,但如果我是您,我实际上会检查它是否真的是。此命令需要复制大部分内存。使用array_{shift,pop} 将避免复制该内存。编写一个脚本,在其中实例化一个非常大的数组,然后调用你的函数,直到数组有 0(或 1)个元素。
  • 我对@9​​87654323@ 和array_pop 解决方案与array_slice 解决方案进行了基准测试。使用array_slice 比另一种慢很多。
【解决方案2】:

要删除第一个元素,使用array_shift,要删除最后一个元素,使用array_pop

<?php    
$array = array('10', '20', '30.30', '40', '50');
array_shift($array);
array_pop($array);

【讨论】:

  • 我认为你的答案是正确的。它比array_slice 有更好的性能。
【解决方案3】:
array_pop($array); // remove the last element
array_shift($array); // remove the first element

【讨论】:

    【解决方案4】:

    array_slice 将是最快的,因为它是单个函数调用。

    你可以这样使用它: array_slice($input, 1, -1);

    不过,在执行此操作之前,请确保数组中至少有 2 个项目。

    【讨论】:

    • 用 -1 代替 count($input)-2 不是更好吗?
    • 是的,一开始我没有注意到。固定。
    • array_slice 需要创建一个新数组,这意味着它的方式比 array_pop 慢
    • 如果数组少于 2 项,array_slice 将起作用。
    【解决方案5】:

    检查此代码:

    $arry = array('10', '20', '30.30', '40', '50');
    $fruit = array_shift($arry);
    $fruit = array_pop($arry);
    print_r($arry);
    

    【讨论】:

      【解决方案6】:

      从数组中删除第一个元素,并返回它:

      array_shift($array);
      

      从数组中移除最后一个元素,并返回它:

      array_pop($array);
      

      如果你不介意同时做这两个,你可以使用:

      array_shift($array,1,-1));
      

      同时敲掉第一个和最后一个元素。

      查看array_pusharray_poparray_slice 文档:)

      【讨论】:

      • array_shift 不接受 3 个参数。它只有一个参数。 array_shift($array, 1, -1) 错了!
      【解决方案7】:
      <?php
      $array  = array("khan","jan","ban","man","le");
      $sizeof_array = sizeof($array);
      $last_itme = $sizeof_array-1;
      //$slicearray= array_slice($array,'-'.$sizeof_array,4);// THIS WILL REMOVE LAST ITME OF ARRAY
      $slicearray = array_slice($array,'-'.$last_itme);//THIS WILL REMOVE FIRST ITEM OF ARRAY
      foreach($slicearray as $key=>$value)
      {
        echo $value;  
        echo "<br>";
      }   
      ?>
      

      【讨论】:

      • array_slice 会创建一个新数组,所以很慢。这个答案用了两次!!
      猜你喜欢
      • 2020-07-21
      • 2013-11-01
      • 2018-09-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-17
      相关资源
      最近更新 更多