2011-03-29 51 views
38

的最后3个元素我有一个数组:PHP获取数组

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

回答

84

,您可以在真正的传递作为第四个参数:

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

谢谢!不知道array_slice()有第四个参数。 – alex 2011-03-29 06:59:36

4

您可以使用array_slice与作为-3偏移,所以你不要”不必担心阵列长度,也可以将preserve_keys参数设置为TRUE

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

使用array_slice

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

这不会保留键,它将重置从0开始的键 – alex 2011-03-29 06:58:05

+0

@alex更新了我的答案,谢谢修复。 – fabrik 2011-03-29 06:59:28

-3

您可以使用array_slice():如果您想保留关键

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

这不会做什么要求。第三个参数的负整数意味着“在数组结束之前停止这么多元素”。这将返回前n-3个元素,其中n是数组中元素的总数。 – tremby 2015-09-30 00:52:59