2010-09-27 6 views
4

Je ne peux pas travailler tout ceci ...récursive remplacer les clés dans un tableau

J'espérais qu'il y aurait une fonction PHP par défaut pour ce faire, mais il semble qu'il n'y ait pas. Le code que j'ai trouvé en ligne ne semble pas vraiment fonctionner pour ma situation, car les gens n'ont souvent besoin que de modifier les valeurs du tableau et non leurs clés.

J'ai besoin essentiellement une fonction récursive qui remplace toutes les clés qui commence par un « _ » avec la même clé, sans ce symbole ....

Quelqu'un at-il utilisé ici quelque chose de semblable auparavant?

Répondre

16

Essayez ceci:

function replaceKeys(array $input) { 

    $return = array(); 
    foreach ($input as $key => $value) { 
     if (strpos($key, '_') === 0) 
      $key = substr($key, 1); 

     if (is_array($value)) 
      $value = replaceKeys($value); 

     $return[$key] = $value; 
    } 
    return $return; 
} 

donc ce code:

$arr = array('_name' => 'John', 
      'ages' => array(
        '_first' => 10, 
        'last' => 15)); 

print_r(replaceKeys($arr)); 

PRODUIRONT (comme on le voit sur codepad):

Array 
(
    [name] => John 
    [ages] => Array 
     (
      [first] => 10 
      [last] => 15 
     ) 

) 
Questions connexes