2017-09-27 53 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; 
     }