如何获取数组中的最后一个元素之前的元素?
我怎样才能得到在PHP5数组最后一个元素之前的元素?
$array[count($array)-2]
它应该是一个数字索引的数组(从零开始)。 你应该至less有2个元素才能工作。 (明显)
即使在这个数组上也可以工作:
$array[0] = "hello"; $array[5] = "how"; $array[9] = "are"; end($array); echo prev($array); // will print "how"
使用count()的其他解决scheme假定您的数组的索引顺序; 通过使用end和prev来移动数组指针,可以得到实际的值。 尝试使用上面的数组上的count()方法,它会失败。
array_slice采用负偏移量作为第二个参数。 这会给你一个包含第二个最后一项的项目数组:
$arr = array(1,2,3,4,5,6); array_slice($arr, -2, 1);
如果你只是想单独的价值,你有几个select。 如果你不介意使用一个中间variables,那么你可以用[0]获得第一个值,或者调用array_pop或array_shift,它们都需要一个通过引用传递的variables,否则你会在严格模式下得到警告。
或者你可以使用array_sum或array_product,这有点hacky,但对单个项目数组工作正常。
至于我很小的解决scheme
end($array); echo prev($array);
一个可以用于关联数组和数组的方法是使用array_pop()
来从数组的末尾popup元素。
$last = array_pop($array); $second_last = array_pop($array); // put back the last array_push($array, $last);
// 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];
所有数组都有一个指向当前数组元素的“内部数组指针” ,PHP有几个函数允许你浏览数组并查看当前元素的键和值。
-
end()
– 将数组的内部指针设置为最后一个元素 -
reset()
– 将数组的内部指针设置为其第一个元素 -
prev()
– 倒回内部数组指针 -
next()
– 推进数组的内部数组指针 -
current()
– 返回数组中的当前元素 -
key()
– 从数组中获取密钥 -
each()
– 从数组中返回当前的键和值对并推进数组游标
这些函数是否工作,无论数组是空的,顺序还是关联的,因为我没有在例子中指定数组,我认为这个数组必须适用于任何数组。
$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 */ }
正如你所看到的预期的结果( false
),不存在的元素的结果是相同的( FALSE
),所以你不能使用返回的元素值检查元素是否存在,元素键是不同的。
密钥可以是整数或string 。 该值可以是任何
type
。 资源
如果元素存在,则key()
返回当前键的值,否则返回NULL。 有效的键不能为NULL,所以如果返回null,我们可以确定该元素不存在。