获取数组中的第一个和最后一个元素

51

嘿,我有这个数组:

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")的方法。 问候


1
请查看reset()end()。另外,0将始终是第一个元素,而最后一个元素可以通过$arr[count($arr)-1]来访问。 - gen_Eric
6个回答

143

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);
?>

输出结果为:

float(24)
float(24.6)

演示


注意:这将重置您的数组指针,这意味着如果您使用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

是的,但看看我的数组,当我使用你的代码时,我得到了警告:“Warning: reset() expects parameter 1 to be array, null given”,end()也是同样的情况。 - user2999787

12

您始终可以使用方括号语法访问数组元素。因此,要获取第一个元素,请使用0,因为数组是以零为基础进行索引的,而使用count($arr) - 1 则可以获取最后一个元素。

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

5

从 PHP 7.3 开始, array_key_firstarray_key_last 可以使用了

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

3
您可以使用reset()来获取第一个元素:
$firstEle = reset($arr);

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

使用end()函数可获取最后一个元素:

$lastEle = end($arr);

end()函数将数组的内部指针移动到最后一个元素,并返回其值。


1

获取第一个元素: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。 - AliN11

0
我们可以使用数组值和数组键来实现目标。
例如:数组值
<?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)];       
?>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接