2021-07-30

PHP数组学习之第一/最后一个元素的获取(二)

在之前的文章《PHP数组学习之第一/最后一个元素的获取(一)》中,给大家介绍了获取数组第一个元素和最后一个元素的方法,但这种方法的本质上是将元素取出然后返回,返回的第一个元素和最后一个元素在数组中不存在了。但有时我们只是想获取数组第一个元素和最后一个元素,并不想改变数组,那要怎么做呢?

其实很简单,PHP中内置的函数reset()和end()即可实现。今天我们就来带大家了解一下reset()和end()函数,通过代码实例看看reset()和end()函数如何获取数组第一个元素和最后一个元素。(附:PHP函数之array数组函数视频讲解

PHP中每个数组都有一个内部指针,即数组指针;该指针会指向数组中的某个元素(该元素就是数组的当前元素)。

数组指针默认最初指向数组中的第一个元素,然后通过移动或改变指针的位置,可访问数组中的任意元素。

而reset()和end()函数就可以改变指针位置:

  • reset()函数:可以将数组中的内部指针指向第一个元素,并返回该元素的值。

  • end()函数:可以将数组中的内部指针指向最后一个元素,并返回该元素的值。

下面通过代码实例来具体了解一下。

reset()函数获取数组第一个元素

实例1:

<?php
header("Content-type:text/html;charset=utf-8");
$arr= array("香蕉","苹果","梨子","橙子","橘子","榴莲");
var_dump($arr);
//获取数组中的第一个元素
$first = reset($arr);
echo "数组第一个元素:" .$first;
?>

输出:

2.png

像这种没有定义键名的数组,输出第一个元素的值时,也可使用“$数组名[0]”的形式获取。

<?php
header("Content-type:text/html;charset=utf-8");
$arr= array("香蕉","苹果","梨子","橙子","橘子","榴莲");
var_dump($arr);
//获取并输出数组中的第一个元素
echo "数组第一个元素:" .$arr[0];
?>

实例2:

<?php
header("Content-type:text/html;charset=utf-8");
$arr= array("香蕉"=>"3元","苹果"=>"5元","梨子"=>"6元","橙子"=>"4元","橘子"=>"3元","榴莲"=>"23元");
var_dump($arr);
//获取数组中的第一个元素
$first = reset($arr);
echo "数组第一个元素的键名和键值:".key($arr)." ".$first;
?>

输出:

1.png

上面代码示例中,我们使用reset($arr)将数组中的内部指针指向第一个元素,那么此时数组的“当前元素”为它的第一个元素“"香蕉"=>"3元"”,所以echo $first会输出“3元”,使用key($arr)获取到的键名为第一个元素的键名“"香蕉"”。

key()函数可以获取数组当前元素的键名,而键值可以使用current()函数返回。

end()函数获取数组最后一个元素

<?php
header("Content-type:text/html;charset=utf-8");
$arr= array("香蕉"=>"3元","苹果"=>"5元","梨子"=>"6元","橙子"=>"4元","橘子"=>"3元","榴莲"=>"23元");
var_dump($arr);
//获取数组中的第一个元素
$last = end($arr);
echo "数组最后一个元素的键名和键值:".key($arr)." ".$last;
?>

输出:

3.png

上面代码示例中,我们使用end($arr)将数组中的内部指针指向最后一个元素,那么此时数组的“当前元素”为它的最后一个元素“"榴莲"=>"23元"”,因此echo $last会输出“23元”,key($arr)会返回最后一个元素的键名“"榴莲"”。

推荐:PHP面试题大汇总(收藏)》《php视频教程

以上就是PHP数组学习之第一/最后一个元素的获取(二)的详细内容,更多请关注php中文网其它相关文章!

php中文网直播班

声明:本文原创发布php中文网,转载请注明出处,感谢您的尊重!如有疑问,请联系admin@php.cn处理

https://www.php.cn/php-weizijiaocheng-480692.html

发表回复

Your email address will not be published. Required fields are marked *