2012-01-27 118 views
2

的$鍵我有一個數組看起來像如何刪除元素,還移陣列

Array 
(
    [0] => 1213059 
    [1] => 1213063 
    [2] => 
    [3] => 
    [4] => 1213072 
) 

我想使它如下:

Array 
(
    [0] => 1213059 
    [1] => 1213063 
    [2] => 1213072 
) 

是否有任何人能幫助我?

非常感謝

回答

4

使用array_filter

檢查demo這裏:

array_values(array_filter($your_array));,讓您的數字鍵。

+1

它''array_filter()'而不是'array_filer()' – 2012-01-27 11:30:38

4

array_filter將刪除計算結果爲假的所有元素:

$array = array_filter($array); 
+1

它確實刪除了元素,但它不會移動鍵... – 2014-01-24 15:34:01

1

我不認爲這些答案,給出正確的領域秩序,有人問。如果你只是想從陣列移除某些字段,並留下鑰匙訂購不變,你可以用

array_filter($arr) or with unset($arr[$i])

做,但如果你想獲得密鑰的新秩序,因此不存在「漏洞」,在上面例如設置鍵4,鍵2的按鍵2和3都沒有設置,你必須使用

ksort($arr) 

下面是一個完整的例子:

$arr=array(1,1,3,2,0); 
print_r($arr); 
echo '<br>'; 
unset($arr[2]); 
ksort($arr); 
print_r($arr); 
$arr=array_values($arr);#EDITED 

ksort($arr)知道不應該排序數組,因爲它應該,所以只是在末尾加上$arr=array_values($arr); #EDITED

ksort()的PHP參考是在link

0

您可以使用此解決方法。

某處定義這個功能:

function removeArrElement($inArr, $elementNr) { 

    for ($i = $elementNr; $i < count($inArr) - 1; $i++) { 
     $inArr[$i] = $inArr[$i + 1]; 
    } 
    unset($inArr[count($inArr) - 1]); 

    return $inArr; 
} 

然後,當你想刪除從$ yourArray特定元素,這樣做:

$yourArray = removeArrElement($yourArray, $nthElement); 

我覺得這不是最有效的方法做到這一點,但它工作正常。