获取PHP数组中的最后一个键值对

时间:2010-09-27 07:38:23

标签: php arrays

我有一个结构如下的数组:

[33] => Array
    (
        [time] => 1285571561
        [user] => test0
    )

[34] => Array
    (
        [time] => 1285571659
        [user] => test1
    )

[35] => Array
    (
        [time] => 1285571682
        [user] => test2
    )

如何获取数组中的最后一个值,但保持索引[35]?

我正在寻找的结果是:

[35] => Array
    (
        [time] => 1285571682
        [user] => test2
    )

9 个答案:

答案 0 :(得分:152)

尝试使用

end($array);

答案 1 :(得分:69)

$last = array_slice($array, -1, 1, true);

有关参数含义的详细信息,请参阅http://php.net/array_slice

P.S。与其他答案不同,这个答案实际上做你想要的。 : - )

答案 2 :(得分:10)

您可以使用end推进指向结尾的内部指针或array_slice以获取仅包含最后一个元素的数组:

$last = end($arr);
$last = current(array_slice($arr, -1));

答案 3 :(得分:4)

如果您有阵列

$last_element = array_pop(array);

答案 4 :(得分:3)

// if your array keys lile
// 0 1 2 3 4 ...

$lastindex= count($ar)-1;

// but if you are not sure

$ar_k=array_keys($ar);
$lastindex=$ar_k[count($ar_k)-1];

// will work

答案 5 :(得分:2)

就像Gumbo说的那样,

<?php

$fruits = array('apple', 'banana', 'cranberry');
echo end($fruits); // cranberry

?>

答案 6 :(得分:0)

冷酷的另一个解决方案是:

$value = $arr[count($arr) - 1];

以上将计算数组值的数量,减去1然后返回值。

注意:只有在数组键为数字时才能使用。

答案 7 :(得分:0)

由于需要密钥,所接受的解决方案不起作用。

此:

end($array);
return array(key($array) => array_pop($array));

将完全按照问题中的示例返回。

答案 8 :(得分:0)

"SPL-way"

$splArray = SplFixedArray::fromArray($array);
$last_item_with_preserved_index[$splArray->getSize()-1] = $splArray->offsetGet($splArray->getSize()-1);

在这里=> The SplFixedArray class了解更多有关SplFixedArray的信息,以及为什么在某些情况下(尤其是大索引大小的数组数据)比基本array更可取的原因。