2016-01-13 14 views
1

我有一個多陣列看起來像這樣:如何刪除多個陣列的某些鍵?

$name_array = [ 
      ['name' => 'mike', 'number' => (int)$a], 
      ['name' => 'lisa', 'number' => (int)$b], 
      ['name' => 'michelle','number' => (int)$c], 
]; 

現在我想刪除所有的按鍵,其中「數量」爲0

我試着這樣說:

foreach ($name_array as $key => $val) 
     { 
      if ($val['number'] == 0) 
      { 
       unset($name_array[$key][$val['number']]); 
      } 
     } 

但這只是不工作...有人可以幫助我呢?

$和$ c是== 0 - 所以我要刪除它們

感謝您的幫助:)

+0

這可能幫助你http://stackoverflow.com/questions/2448964/php-how-to-remove-specific-element-from-an-array –

+0

我想試試:) – ItzMe42

回答

0

你沒有覆蓋同樣的錯誤。使用此代碼:

$a = 0; 
$b = 200; 
$c = 0; 

$name_array = [ 
    ['name' => 'mike', 'number' => (int) $a], 
    ['name' => 'lisa', 'number' => (int) $b], 
    ['name' => 'michelle', 'number' => (int) $c], 
]; 

for ($i=0; $i<count($name_array); $i++){ 
    if(!$name_array[$i]['number']){ 
     unset($name_array[$i]['number']); 
    } 
} 
echo '<pre>'; 
print_R($name_array); 

//輸出樣本

Array 
(
    [0] => Array 
     (
      [name] => mike 
     ) 

    [1] => Array 
     (
      [name] => lisa 
      [number] => 200 
     ) 

    [2] => Array 
     (
      [name] => michelle 
     ) 

) 
+0

我不知道爲什麼,但這不會工作:oi認爲它關於$ name_array [$ i] ['數字'] - 第一個[]只是填充名稱 - 那麼爲什麼要肩負$我? – ItzMe42

+0

因爲沒有使用索引,你將如何覆蓋鍵或取消設置鍵?我認爲foreach不起作用。 –

+0

你能否給我提供$ a,$ b,$ c的值。所以我可以再次測試我的代碼 –

0

試試這個代碼:

<?php 

$a = 0; 
$b = 0; 
$c = 10; 
$name_array = [ 
    ['name' => 'mike', 'number' => (int) $a], 
    ['name' => 'lisa', 'number' => (int) $b], 
    ['name' => 'michelle', 'number' => (int) $c], 
]; 

for ($i=0; $i<count($name_array); $i++){ 
    if($name_array[$i]['number']==0){ 
     //unset($name_array[$i]['number']); 
     unset($name_array[$i]); 
    } 
} 
echo '<pre>'; 
print_R($name_array); 

?> 
+0

這不會取消只是'數字'爲0的鍵:0 – ItzMe42

+0

我編輯我的代碼,這項工作 – rdn87

+0

這已刪除每0,除了最後一個:o我的原始代碼有30次0和它刪除了29 O操作。o – ItzMe42

-1

變化

unset($key); 

unset($name_array[$key]['number']); 
0

你已經非常接近你的原始努力,但訪問數組元素的語法不正確。這確實符合你的預期。

$a=0; 
$b=99; 
$c=0; 


$name_array = array(
    array('name' => 'mike', 'number' => (int)$a), 
    array('name' => 'lisa', 'number' => (int)$b), 
    array('name' => 'michelle','number' => (int)$c), 
); 

foreach ($name_array as $key => $val) { 
    if ($val['number'] === 0) unset($name_array[$key]['number']); 
} 
+0

這只是刪除所有的0,除了最後一個:o – ItzMe42

+0

這就是你想要的不是? '「現在我想刪除'數字'爲0」'的所有鍵 – RamRaider

0

從陣列中刪除不需要的項目聽起來像是很好用的array_filter

$name_array = array_filter($name_array, function($x){ 
    return $x['number'] != 0; 
});