如何在保留键的情况下获取关联数组的最后3个元素?PHP

77

我有一个数组:

[13] => Array
        (
            [0] => joe
            [1] => 0

    [14] => Array
        (
            [0] => bob
            [1] => 0
        )

    [15] => Array
        (
            [0] => sue
            [1] => 0
        )

    [16] => Array
        (
            [0] => john
            [1] => 0
        )

    [17] => Array
        (
            [0] => harry
            [1] => 0
        )

    [18] => Array
        (
            [0] => larry
            [1] => 0
        )

如何获取最后3个元素并保留其键名?(数组中的元素数量可能会变化,因此不能简单地在第二个元素之后进行切片)

因此输出将为:

  [16] => Array
        (
            [0] => john
            [1] => 0
        )

    [17] => Array
        (
            [0] => harry
            [1] => 0
        )

    [18] => Array
        (
            [0] => larry
            [1] => 0
        )
4个回答

161

如果你想保留 key,你可以将 true 作为第四个参数传入:

array_slice($a, -3, 3, true);

需要注意的是,您不需要知道数组的长度才能使其按预期工作。因此,它将返回指定的最大数量,如果您的数组长度较小,则返回较少的数量,而不会出现错误。 https://3v4l.org/v2HLV - Will B.

45

使用array_slice

$res = array_slice($array, -3, 3, true);

10

您可以使用 array_slice 函数,将偏移量设置为 -3,这样您就不必担心数组长度的问题。同时,将 preserve_keys 参数设置为 TRUE 可以保留原数组的键名。

$arr = array_slice($arr,-3,3,true);                                             

-4

你可以使用array_slice()函数:

<?php
    // -3 = start from the end
    // true = preserve_keys
    $result = array_slice($array, 0, -3, true); 
?>

1
这并不是所需的功能。第三个参数上的负整数表示“在数组结束前停止这么多元素”。这将返回前n-3个元素,其中n是数组中元素的总数。 - tremby

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接