2017-09-27 33 views
0

刪除鍵我想刪除鍵[參考價格]但我用爲刪除功能不適用於這種情況下在多維數組

工作,我有:

Array(
     [Values] => 1 
     [Product] => Array( 
          [Details] => Array( 
               [ID] => 1 
               [Price] => Array(
                  ) 
              ) 
         ) 
    ) 

我的目標是:

Array(
     [Values] => 1 
     [Product] => Array( 
          [Details] => Array( 
               [ID] => 1 
              ) 
         ) 
    ) 

我用這個去除:

function remove_key($array, $key) 
     { 
      foreach($array as $k => $v) { 

       if(is_array($v)) { 
        $array[$k] = remove_key($v, $key); 
       } elseif($k == $key) { 
        unset($array[$k]); 
       } 
      } 
      return $array; 
     } 

$array = remove_key($array,'Price'); 

這裏有什麼問題?

+0

可能重複[在多維數組中刪除父鍵](https:// stack overflow.com/questions/46410080/remove-parent-key-in-multidimensional-array) – RomanPerekhrest

+3

可能重複[PHP遞歸取消數組鍵匹配](https://stackoverflow.com/questions/1708860/php-recursively-未固化的陣列密鑰-如果匹配) – Script47

回答

0
<?php 
$array = Array(
    'Values' => 1, 
'Product' => Array(
    'Details' => Array(
     'id' => 1, 
     'Price' => Array(
) 
    ) 
    ) 
); 



unset($array['Product']['Details']['Price']); 
echo "<pre>"; 
print_r($array); 
echo "</pre>"; 

,輸出是:

Array 
(
    [Values] => 1 
    [Product] => Array 
     (
      [Details] => Array 
       (
        [id] => 1 
       ) 

     ) 

) 
0

所以如果你想解決您的功能,你必須添加另一個條件到第一if爲使&& $k != $key 因爲你沒有進入elseifunset不叫做

function remove_key($array, $key) 
     { 
      foreach($array as $k => $v) { 
       if(is_array($v) && $k != $key) { 
        $array[$k] = remove_key($v, $key); 
       } elseif($k == $key) { 
        unset($array[$k]); 
       } 
      } 
      return $array; 
     }