2017-09-27 1 views
0

Je veux supprimer [Prix] clé, mais la fonction que je l'utilise pour la suppression ne fonctionne pas pour ce casRetirez la clé dans le tableau multidimensionnel

Je:

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

Mon but est:

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

J'utilise ce pour l'enlèvement:

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'); 

Quel est le problème ici?

+0

Copie possible de [Supprimer la clé parent dans un tableau multidimensionnel] (https: // pile overflow.com/questions/46410080/remove-parent-key-in-multidimensional-array) – RomanPerekhrest

+3

Copie possible de [Clés de tableau récursivement non configurées PHP si match] (https://stackoverflow.com/questions/1708860/php-recursively- unset-array-keys-if-match) – Script47

Répondre

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>"; 

Et la sortie est:

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

     ) 

) 
0

donc si vous voulez fixer votre fonction, vous devez ajouter une autre condition en premier if comme si && $k != $key parce que vous n'êtes pas embarquez elseif et unset n'est pas appelé

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; 
     }