【问题标题】:get first and last element in array获取数组中的第一个和最后一个元素
【发布时间】:2013-12-01 21:32:10
【问题描述】:

嘿,我有这个数组:

array(1) {
  ["dump"]=>
  string(38) "["24.0",24.1,24.2,24.3,24.4,24.5,24.6]"
}

我的问题:

如何从这个数组中取出第一个和最后一个元素,所以我会有:

$firstEle = "24.0";

和

$lastEle = "24.6";

有人知道如何从数组中获取这些元素吗?

我已经试过了:

$arr = json_decode($_POST["dump"], true); 

$col0 = $arr[0];
$col1 = $arr[1];
$col2 = $arr[2];
$col3 = $arr[3];
$col4 = $arr[4];
$col5 = $arr[5];
$col6 = $arr[6];

我可以选择 $col0 和 $col6,但数组可能会更长,因此需要一种过滤第一个(“24.0”)和最后一个(“24.6”)元素的方法。 问候

【问题讨论】:

  • 看看reset() 和end()。附言0 永远是第一个元素,最后你可以做$arr[count($arr)-1]。

标签: php arrays indexing


【解决方案1】:

从 PHP 7.3 开始,array_key_first 和 array_key_last 可用

$first = $array[array_key_first($array)];    
$last = $array[array_key_last($array)];

【讨论】:

    【解决方案2】:

    对于第一个元素:current($arrayname);

    最后一个元素:end($arrayname);

    current():current()函数返回当前的值 数组中的元素。每个数组都有一个指向它的内部指针 “当前”元素,初始化为插入的第一个元素 进入数组。

    end():end() 函数将内部指针移动到,并输出, 数组中的最后一个元素。相关方法:current() - 返回 数组中当前元素的值

    $array = array(24.0,24.1,24.2,24.3,24.4,24.5,24.6);
    
    $first = current($array);
    $last = end($array);
    
    echo 'First Element: '.$first.' :: Last Element:'.$last;
    

    输出结果:

    First Element: 24 :: Last Element:24.6
    

    【讨论】:

    • 注意使用这种方法。 $array = array(1, 2, 3); echo current($array) . " "; echo end($array) . " "; echo current($array) . " "; 返回 1 3 3
    【解决方案3】:

    我们也可以使用数组值和数组键来实现目标

    示例:数组值

    <?php
        $array = array(24.0,24.1,24.2,24.3,24.4,24.5,24.6);        
        $array_values = array_values($array);
    
        // get the first item in the array
        print array_shift($array_values); 
    
        // get the last item in the array
        print array_pop($array_values);       
    ?>
    

    示例:数组键

     <?php
        $array = array(24.0,24.1,24.2,24.3,24.4,24.5,24.6);        
        $array_keys = array_keys($array);
    
        // get the first item in the array
        print $array[array_shift($array_keys)]; 
    
        // get the last item in the array
        print $array[array_pop($array_keys)];       
    ?>
    

    【讨论】:

      【解决方案4】:

      reset() 和 end() 正是这样做的。

      来自手册:

      reset():返回第一个数组元素的值,如果数组为空,则返回 FALSE。

      end():返回最后一个元素的值,或者为空数组返回 FALSE。

      例子:

      <?php
          $array = array(24.0,24.1,24.2,24.3,24.4,24.5,24.6);
          
          $first = reset($array);
          $last = end($array);
          
          var_dump($first, $last);
      ?>
      

      哪些输出:

      浮点数(24)
      浮动(24.6)

      DEMO


      注意:如果您使用current() 获取当前元素或者您已搜索到数组的中间,这将重置您的数组指针,reset() 和end() 将重置数组指针(到开头和结尾):

      <?php
      
      $array = array(30.0, 24.0, 24.1, 24.2, 24.3, 24.4, 24.5, 24.6, 12.0);
          
      // reset — Set the internal pointer of an array to its first element
      $first = reset($array);
      
      var_dump($first); // float(30)
      var_dump(current($array)); // float(30)
      
      // end — Set the internal pointer of an array to its last element
      $last = end($array);
          
      var_dump($last); // float(12)
      var_dump(current($array)); // float(12) - this is no longer 30 - now it's 12
      

      【讨论】:

      • 是的,但是看看我的数组,当我使用你的代码时,我得到:“警告:reset() 期望参数 1 是数组,给定 null”和 end()
      【解决方案5】:

      您始终可以使用方括号语法访问数组元素。所以要获得第一个使用0,因为数组是从零开始索引的,count($arr) - 1 获得最后一项。

      $firstEle = $arr[0];
      $lastEle = $arr[count($arr) - 1];
      

      【讨论】:

        【解决方案6】:

        您可以使用reset()获得第一:

        $firstEle = reset($arr);
        

        reset() 将数组的内部指针回退到第一个元素并返回第一个数组元素的值。

        和end() 获得最后一个:

        $lastEle = end($arr);
        

        end() 将数组的内部指针前进到最后一个元素,并返回它的值。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-07-17
          • 1970-01-01
          • 2012-04-21
          • 2013-01-14
          • 2017-02-13
          • 2023-04-09
          • 2017-11-15
          • 1970-01-01
          相关资源
          最近更新 更多