2013-10-25 38 views
2

我有數組:如何在PHP中刪除數組元素?

陣列:

Array 
(
[0] => Array 
    (
     [name] => point 
     [visibility] => 
    ) 

[1] => Array 
    (
     [name] => php_first_table 
     [visibility] => 1 
    ) 

[2] => Array 
    (
     [name] => ohz 
     [visibility] => 1 
    ) 

) 

現在我想找到與name=ohz刪除元素:

for($i=0;$i<count($arrays);$i++){ 
     if(array_search("ohz",$arrays[$i])){ 
      unset($arrays[$i]); 
     } 
    } 
    print_r($arrays); 

輸出:

Array 
(
[0] => Array 
    (
     [name] => point 
     [visibility] => 
    ) 

[2] => Array 
    (
     [name] => ohz 
     [visibility] => 1 
    ) 

) 

爲什麼php_first_tableohz被刪除?

+0

的代碼應該可以正常工作。你能否提供一個具有這種行爲的完整程序? – Jon

回答

2

嘗試像

for($i=0;$i<count($arrays);$i++){ 
    if($arrays[$i]['name'] == 'ohz')){ 
     unset($arrays[$i]); 
    } 
} 
print_r($arrays); 
+0

當然!我的言論是愚蠢的。謝謝) –

3

在PHP中存在array_filter()此:

$arrays = array_filter($arrays, function($item) 
{ 
    return !(array_key_exists('name', $item) && $item['name']=='ohz'); 
}); 
+0

@Jon我現在檢查一下,謝謝(我用別的東西搞亂了這個) –

+0

公平地說,自己改變內部數組指針(例如通過調用循環內的'reset')是有問題的。但刪除項目是可以的。 – Jon

+0

@Jon你是對的,我錯過了_array pointer_(顯然與本案無關)。對不起,最好休息一下..再次感謝! –

0

試試這個:

<?php 
     $arr_var = Array 
     (
      Array('name' => 'point','visibility' => ''), 
      Array('name' => 'php_first_table', 'visibility' => 1), 
      Array('name' => 'ohz', 'visibility' => 1) 
     ); 

     foreach($arr_var as $key => $value) 
     { 
      if($value['name'] == 'ohz'){ 
       unset($arr_var[$key]); 
      } 
     } 

     echo '<pre>'; 
     print_r($arr_var); 
     ?> 

工作的罰款。

  • 感謝