在 PHP 中查找数组中的第一项和最后一项
在PHP中从数组中获取第一项或最后一项通常很容易。如果您创建一个数组,然后向其中添加一堆值,那么对于您添加的每个元素,数组索引将增加1。这意味着为了从数组中获取第一个元素,您只需引用默认的起始位置(0)。要获取数组中的最后一项,索引键将是数组的长度减1。以下是一些示例代码,显示了这一点。
当数组具有非标准键值时,事情会变得稍微复杂一些。以以下数组为例,其中数组计数从1开始。
'one', 2 => 'two', 3 => 'three');此处不可能将数组的第一项引用为0,因为该数组键不存在(在这种情况下,我们会得到“未定义偏移量”错误)。此外,如果我们尝试以与之前相同的方式访问数组中的最后一项,那么我们将返回值“二”,因为数组的长度(3)减去1将指向该数组中间的键.
PHP附带了几个函数,可以在提取数组中的项目时提供帮助。一种方法是使用该array_values()函数,该函数将返回一个所有键值都已重置的数组。这意味着数组中的第一项的键为0,最后一项的键为数组的长度,减1。因此,您可以使用原始方法查找第一项和最后一项。
'one', 2 => 'two', 3 => 'three'); $array_values = array_values($array); //获取数组中的第一项 print $array_values[0]; //打印“一个” //获取数组中的最后一项 print $array_values[count($array_values) - 1]; //打印“三”当array_values()函数创建返回数组的副本时,我们可以使用几个函数来剪掉数组的开头和结尾,而不会改变原始数组。该array_shift()函数接受一个数组,因为它是唯一的参数,并将切断并返回该数组中找到的第一项。该array_pop()函数接受一个数组,因为它是唯一的参数,并将切断并返回数组中找到的最后一项。这为我们提供了一种简单的机制来完成我们的原始任务,而无需这些函数改变原始数组。
'one', 2 => 'two', 3 => 'three'); $array_values = array_values($array); //获取数组中的第一项 print array_shift($array_values); //打印“一个” //获取数组中的最后一项 print array_pop($array_values); //打印“三”与此类似的另一种方法是使用该array_keys()函数使用array_shift()and返回数组的第一个和最后一个键,array_pop()然后在原始数组中直接引用它们。
'one', 2 => 'two', 3 => 'three'); $array_keys = array_keys($array); //获取数组中的第一项 print $array[array_shift($array_keys)]; //打印“一个” //获取数组中的最后一项 print $array[array_pop($array_keys)]; //打印“三”显然有几种方法可以在PHP中完成这个简单的任务。但是,从数组中提取第一项和最后一项的最佳方法是使用内部PHP数组指针函数。每个数组都有一个指向“当前”元素的内部指针。创建数组时,此指针被初始化为数组中的第一个元素。有一些PHP函数处理移动这个指针周围一个数组,但发现我们只需要看看第一个和最后一个元素的目的current(),reset()和end()。
该end()函数将指针移动到数组中的最后一个元素并返回它的值。该reset()函数将指针移动到数组的开头并返回第一个元素。该current()函数将返回数组中的当前项,如果数组是新初始化的,它应该是第一个元素。current()除非您确切知道数组指针的位置,否则使用该函数可能是不可预测的,在这种情况下,该reset()函数可能是更好的选择。
'one', 2 => 'two', 3 => 'three'); //获取数组中的第一项 (probably) print current($array); //打印“一个” //获取数组中的第一项 (definitely) print reset($array); //打印“一个” //获取数组中的最后一项 print end($array); //打印“三”像这样使用内部PHP数组指针的性能比使用array_values(),array_pop()或的组合高很多倍count()。这是一个重要的考虑因素,尤其是在大型应用程序中处理多个数组时。