PHP-如何获取数组中最后一个元素之前的元素?

如何从PHP 5中的数组中获取最后一个元素之前的元素?

Manny Calavera asked 2020-02-14T07:09:02Z
7个解决方案
121 votes

即使在此数组上也可以使用:

$array[0] = "hello";
$array[5] = "how";
$array[9] = "are";

end($array);
echo prev($array); // will print "how"

其他使用count()的解决方案是假设数组的索引按顺序排列。 通过使用end和prev移动数组指针,您可以获得实际值。 尝试在上面的数组上使用count()方法,它将失败。

Erik answered 2020-02-14T07:22:23Z
71 votes
$array[count($array)-2]

它应该是一个数字索引数组(从零开始)。 您必须至少有2个元素才能起作用。 (明显)

Notinlist answered 2020-02-14T07:21:58Z
17 votes

至于我很小的解决方案

end($array);
echo prev($array);
DevAnimal answered 2020-02-14T07:22:44Z
16 votes

array_slice使用负偏移量作为第二个参数。 这将为您提供包含倒数第二个项目的单个项目数组:

$arr = array(1,2,3,4,5,6);
array_slice($arr, -2, 1);

如果您只想使用单个值,则可以选择几种方法。 如果您不介意使用中间变量,则可以使用[0]来获取第一个值,或者调用array_pop或array_shift,它们都需要通过引用传递的变量,否则您将在严格模式下收到警告。

或者,您可以只使用array_sum或array_product,这有点棘手,但对单项数组效果很好。

James Wheare answered 2020-02-14T07:23:13Z
6 votes

一种适用于关联数组和数值数组的方法是使用array_pop()将元素弹出数组末尾。

$last = array_pop($array);
$second_last = array_pop($array);

// put back the last
array_push($array, $last);
Yada answered 2020-02-14T07:23:34Z
4 votes

所有数组都有一个指向内部数组元素的“内部数组指针”,PHP具有一些功能,可让您浏览数组并查看当前元素的键和值。

  • key()-将数组的内部指针设置为其最后一个元素
  • key()-将数组的内部指针设置为其第一个元素
  • key()-倒带内部数组指针
  • key()-推进数组的内部数组指针
  • key()-返回数组中的当前元素
  • key()-从阵列中获取密钥
  • key()-从数组返回当前键和值对并前进数组光标

这些函数无论数组是空的,顺序的还是关联的都起作用,并且由于示例中未指定数组,因此我假定它必须与任何数组一起工作。

$array = array(
    'before_last' => false,
    'last' => false,
);

end($array); /* 
- set pointer to last element -> $array['last']
- return new current element value if it exists, -> false
- else return FALSE 
*/

prev($array); /* 
- set pointer one place before current pointer -> $array['before_last']
- return new current element value if it exists, -> false
- else return FALSE 
*/

if(!is_null(key($array)){ /* 
- return current element key if it exists -> "before_last"
- else return NULL
*/
    $before_last_element_value = current($array); /* 
    - return current element value if it exists, -> false
    - else return FALSE 
    */
}

正如您所看到的预期结果(key())和不存在的元素的结果相同(FALSE)一样,因此您无法使用返回的元素值检查元素是否存在,因此元素键是不同的。

键可以是整数或字符串。 该值可以是任何key()168。

如果元素存在,则key()返回当前键的值,否则该元素将返回NULL。有效键永远不能为NULL,因此如果返回null,我们可以确定该元素不存在。

TarranJones answered 2020-02-14T07:24:46Z
2 votes
// Indexed based array
$test = array('a','b','c','d','e');
$count = count($test);
print $test[$count-2];

// Associative Array
$months = array(
         'jan'=>'January', 
         'feb' => 'february', 
         'mar' => 'March', 
         'apr' => 'April'
    );

$keys = array_keys($months);
$count = count($keys);
print $keys[$count-2];
Darshana answered 2020-02-14T07:25:02Z
translate from https://stackoverflow.com:/questions/2194388/php-how-to-get-the-element-before-the-last-element-from-an-array