2009-12-02 139 views
0

我需要從一個多維數組拿到最後6個值最後6個值,我試圖做這樣的事情獲取從多維數組

for($i=0;$i<6;$i++){ 
    $stats = array_shift($stats); 
} 

但隨後第一array_shift後,我得到的以下錯誤

PHP Warning: array_shift(): The argument should be an array 

是否有任何函數可以在PHP中執行此操作?

回答

9

您可以使用array_slice()

$stats = array_slice($stats, -6); 

你的代碼是不工作的原因是因爲

  1. array_shift()從陣列前端刪除 - 所以你最終與第一6去除,這是不一樣的越來越近6除非你的陣列有12個項目...
  2. array_shift編輯陣列中的位置,並返回它去掉
  3. 項目
+2

的這些原因,第二個是爲什麼你的警告 - 因爲你已經有了一個多維數組,在第一時間通過循環'array_shift'返回您在多維數組的第一個元素,這是一個(單維)數組。在單維數組上調用'array_shift'會返回該數組的第一個值,所以'$ stats'在第二次循環後不是數組。我希望你在array_shift被調用兩次之後(即在循環的第三次迭代中)會得到一個錯誤。 – 2009-12-02 11:32:33

+0

我引述來自@neokio一個偉大的評論: 通過這個答案激動,我做了10萬次迭代快速測試,比較(一)結束($ ARR); $鍵=鍵($ ARR);重置($ ARR ); (b)$ key = key(array_slice($ arr,-1,1,true)); ...導致end()更快! end()= 0.05326秒,array_slice = 8.506秒......呵呵?? - - neokio 12年12月26日在7:00 這意味着array_slice不是很perfomant。 ü可能嘗試這一個: '爲($ I = 0; $ I <6; $ I ++){$ 統計= array_shift($統計); }' – ItsMeDom 2014-06-27 05:17:03