获取数组中的第一个和最后一个元素
Posted
技术标签:
【中文标题】获取数组中的第一个和最后一个元素【英文标题】: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]
。
【参考方案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()
将数组的内部指针前进到最后一个元素,并返回它的值。
【讨论】:
以上是关于获取数组中的第一个和最后一个元素的主要内容,如果未能解决你的问题,请参考以下文章