简体   繁体   English

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

[英]Get last key-value pair in PHP array

I have an array that is structured like this: 我有一个结构如下的数组:

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

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

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

How can I get the last value in the array, but maintaining the index [35]? 如何获取数组中的最后一个值,但保持索引[35]?

The outcome that I am looking for is this: 我正在寻找的结果是这样的:

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

试着用

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

See http://php.net/array_slice for details on what the arguments mean. 有关参数含义的详细信息,请参见http://php.net/array_slice

PS Unlike the other answers, this one actually does what you want. PS与其他答案不同,这个答案实际上做了你想要的。 :-) :-)

You can use end to advance the internal pointer to the end or array_slice to get an array only containing the last element: 您可以使用end将内部指针前进到end或array_slice以获取仅包含最后一个元素的数组:

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

如果你有一个阵列

$last_element = array_pop(array);

Example 1: 例1:

$arr = array("a"=>"a", "5"=>"b", "c", "key"=>"d", "lastkey"=>"e");
print_r(end($arr));

Output = e 输出 = e


Example 2: 例2:

ARRAY without key(s) 没有钥匙的阵列

$arr = array("a", "b", "c", "d", "e");
print_r(array_slice($arr, -1, 1, true));
// output is = array( [4] => e ) 

Example 3: 例3:

ARRAY with key(s) 钥匙的阵列

$arr = array("a"=>"a", "5"=>"b", "c", "key"=>"d", "lastkey"=>"e");
print_r(array_slice($arr, -1, 1, true));
// output is = array ( [lastkey] => e ) 

Example 4: 例4:

If your array keys like : [0] [1] [2] [3] [4] ... etc. You can use this: 如果你的数组键如:[0] [1] [2] [3] [4] ......等你可以使用这个:

$arr = array("a","b","c","d","e");
$lastindex = count($arr)-1;
print_r($lastindex);

Output = 4 输出 = 4


Example 5: But if you are not sure! 例5:但如果你不确定!

$arr = array("a"=>"a", "5"=>"b", "c", "key"=>"d", "lastkey"=>"e");
$ar_k = array_keys($arr);
$lastindex = $ar_k [ count($ar_k) - 1 ];
print_r($lastindex);

Output = lastkey 输出 = lastkey


Resources: 资源:

  1. https://php.net/array_slice https://php.net/array_slice
  2. https://www.php.net/manual/en/function.array-keys.php https://www.php.net/manual/en/function.array-keys.php
  3. https://www.php.net/manual/en/function.count.php https://www.php.net/manual/en/function.count.php
  4. https://www.php.net/manual/en/function.end.php https://www.php.net/manual/en/function.end.php

Like said Gumbo, 就像说Gumbo一样

<?php

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

?>

Another solution cold be: 另一个解决方案是:

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

The above will count the amount of array values, substract 1 and then return the value. 以上将计算数组值的数量,减去1然后返回该值。

Note: This can only be used if your array keys are numeric. 注意:仅当数组键为数字时才能使用此选项。

As the key is needed, the accepted solution doesn't work. 由于需要密钥,所接受的解决方案不起作用。

This: 这个:

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

will return exactly as the example in the question. 将完全返回问题中的示例。

"SPL-way" : "SPL-way"

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

Read more about SplFixedArray and why it's in some cases ( especially with big-index sizes array-data) more preferable than basic array here => The SplFixedArray class . 阅读更多关于SplFixedArray以及为什么它在某些情况下(特别是对于大索引大小的数组 - 数据)比基本array更优选=> SplFixedArray类

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM