2013-02-14 67 views
0

我做了大量的研究,我無法找到如何從PHP中的數組中刪除元素。在Java中,如果你有一個ArrayList<SomeObject> list,你會說list.remove(someObject);如何在php中從數組中刪除元素?

在PHP中可以做什麼類似的事情嗎?我找到了unset($array[$index]);,但它似乎不起作用。

感謝您的幫助提前!

+1

定義**'似乎沒有work' ** – asprin 2013-02-14 13:07:30

+2

'unset'是正確的。你怎麼確定它不起作用? – 2013-02-14 13:07:32

+0

取消設置,但可能您的索引是一個整數,您用於取消設置的索引是一個字符串? – Nir 2013-02-14 13:09:18

回答

1

unset($array[$index]);實際工作。
我能想到的唯一問題就是你迭代這個數組的方式。
只是使用的foreach代替for

也確保$索引中包含正確的值

,以測試你的陣列可以使用var_dump()

$cars[0]="Volvo"; 
$cars[1]="BMW"; 
$cars[2]="Toyota"; 

unset($cars[0]); 
var_dump($cars); 
+0

可以說我有這個數組$ car [0] =「Volvo」; $汽車[1] = 「BMW」; $汽車[2] = 「豐田」;當我說未設置($ cars [0])時,我只剩下[1]和[2]了,對嗎? – ACetin 2013-02-14 13:14:22

1

unset應該工作,你也可以試試這個:

$array = array_merge(
      array_slice($array, 0, $index), 
      array_slice($array, $index+1) 
     ); 
+0

該代碼片段有什麼作用? – ACetin 2013-02-14 13:12:59

+0

將數組切片成2個子數組,然後將它們合併成一個 – pwolaq 2013-02-14 13:15:31

1

你需要t ø或者刪除它,並取出空數組:

function remove_empty($ar){ 
    $aar = array(); 
    while(list($key, $val) = each($ar)){ 
     if (is_array($val)){ 
      $val = remove_empty($val); 
      if (count($val)!=0){ 
       $aar[$key] = $val; 
      } 
     } 
     else { 
      if (trim($val) != ""){ 
       $aar[$key] = $val; 
      } 
     } 
    } 
    unset($ar); 
    return $aar; 
} 

remove_empty(陣列(1,2,3, '',5))返回陣列(1,2,3,5)

+0

所以如果我有[1],[2],[3],[4]和刪除[2],我想要該數組重新編排數組,所以而不是[1],[3],[4],我得到[1],[2],[3] – ACetin 2013-02-14 13:18:19

0

如果要刪除可以使用unset()或替代array_splice()

取消設置()只是一個陣列元件
實施例:

<?php 

    $array = array(0 => "x", 1 => "y", 2 => "z"); 
    unset($array[1]); 
    //If you want to delete the second index ie, array[1] 
?> 

輸出

Array (
    [0] => a 
    [2] => c 
)