好,
我知道关于array_pop()
全部知识,但这会删除最后一个元素。 在不删除数组的情况下获取数组最后一个元素的最佳方法是什么?
编辑:这是奖金:
$array = array('a' => 'a', 'b' => 'b', 'c' => 'c');
甚至
$array = array('a', 'b', 'c', 'd');
unset($array[2]);
echo $array[sizeof($array) - 1]; // Output: PHP Notice: Undefined offset: 2 in - on line 4
#1楼
避免传递引用错误(例如“ end(array_values($ foo))”)的一种方法是使用call_user_func或call_user_func_array:
// PHP Fatal error: Only variables can be passed by reference
// No output (500 server error)
var_dump(end(array(1, 2, 3)));
// No errors, but modifies the array's internal pointer
// Outputs "int(3)"
var_dump(call_user_func('end', array(1, 2, 3)));
// PHP Strict standards: Only variables should be passed by reference
// Outputs "int(3)"
var_dump(end(array_values(array(1, 2, 3))));
// No errors, doesn't change the array
// Outputs "int(3)"
var_dump(call_user_func('end', array_values(array(1, 2, 3))));
#2楼
$lastValue = end(array_values($array))
没有修改$ array指针。 这样可以避免
reset($array)
在某些情况下可能不需要。
#3楼
array_slice($array, -1)
什么问题? (请参见手册: http : //us1.php.net/array_slice )
array_slice()
返回一个数组。 可能不是您要找的东西。 您需要元素。
#4楼
为此,请避免使用E_STRICT且不会弄乱数组的内部指针,可以使用:
function lelement($array) {return end($array);}
$last_element = lelement($array);
lelement仅适用于副本,因此不会影响数组的指针。
#5楼
为了从Array获取最后一个值:
array_slice($arr,-1,1) ;
对于删除最后一个值形式数组:
array_slice($arr,0,count($arr)-1) ;
来源:oschina
链接:https://my.oschina.net/stackoom/blog/3164882