在不删除数组的情况下获取数组最后一个元素的最佳方法是什么?

你离开我真会死。 提交于 2020-02-26 09:37:35

好,

我知道关于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) ;
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!