2011-11-02 83 views
18

如何以最有效的方式截斷PHP數組?PHP如何截斷數組

我應該用array_splice

+0

你想實現什麼?舉一些例子。 – hsz

+6

爲什麼反感'array_splice'? – Clive

+0

我讀了一個SQL連接結果,並且需要在第3次迭代中重置一個關聯數組。我認爲可以在這裏使用count,就像在某些語言中將數組長度設置爲0 ... –

回答

18

可以使用本地函數刪除數組元素:

有了這些知識使自己的功能

function array_truncate(array $array, $left, $right) { 
    $array = array_slice($array, $left, count($array) - $left); 
    $array = array_slice($array, 0, count($array) - $right); 
    return $array; 
} 

演示 - http://codepad.viper-7.com/JVAs0a

+0

Peter你可以解釋一下 –

+1

@RahilWazir從左邊截去x'$ left'元素,從右邊截斷x'$ right'參數什麼是'$ left'和'$ right'參數 – Peter

4

是的,除非你想循環數組和unset()不需要的元素。

+1

...並更新數組鍵如果他們是數字。 – FMaz008

+0

請注意,在foreach中,您必須使用完整的數組索引引用,因爲foreach使用數組的副本。 'foreach($ array as $ key => $ value){unset($ array [$ key]}'not'foreach($ array as $ key => $ value){unset($ value)}'。第二個 –

0

您可以使用此功能之一:

function array_truncate(&$arr) 
{ 
    while(count($arr) > 0) array_pop($arr); 
} 
// OR (faster) 
function array_truncate2(&$arr) 
{ 
    array_splice($arr, 0, count($arr)); 
} 

用法:

$data2 = array("John" => "Doe", "Alice" => "Bob"); 
array_truncate($data2); 
// OR 
array_truncate2($data2); 
+0

'while'-循環可能是截斷數組效率最低的方法:-) –

+0

@Alexander當然這是因爲,這就是爲什麼我說(在評論中)其他更快。我包含到array_pop方法來顯示一個方法,您可以選擇在丟棄它之前對元素執行某些操作。 –

2

這functi on應該工作

function truncateArray($truncateAt, $arr) { 
    array_splice($arr, $truncateAt, (count($arr) - $truncateAt)); 
    return $arr; 
}