【问题标题】:PHP get the last 3 elements of an associative array while preserving the keys?PHP获取数组的最后3个元素
【发布时间】:2011-07-25 01:04:19
【问题描述】:

我有一个数组:

[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
        )

【问题讨论】:

    标签: php arrays


    【解决方案1】:

    如果要保留ke​​y,可以传入true作为第四个参数:

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

    【讨论】:

    • 谢谢!不知道 array_slice() 有第四个参数。
    • 需要注意的是,您不需要知道数组的长度就可以按预期工作。因此,如果您的数组长度较小,它将返回指定的最大数量,或者更少,而不会出现错误。 3v4l.org/v2HLV
    【解决方案2】:

    使用array_slice:

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

    【讨论】:

    • 这不会保留密钥,它会从 0 开始重置密钥
    【解决方案3】:

    您可以使用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); 
      ?>
      

      【讨论】:

      • 这不符合要求。第三个参数上的负整数表示“在数组末尾之前停止这么多元素”。这将返回前 n-3 个元素,其中 n 是数组中元素的总数。
      猜你喜欢
      • 2012-03-31
      • 2022-09-29
      • 2017-09-02
      • 1970-01-01
      • 1970-01-01
      • 2011-01-12
      • 2016-09-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多