2013-05-26 3 views
0

Avec ceci:get article, un tableau assoctivate

//Example array 
$arr = array(
'db' => array('host' => 'local', 'user' => 'root')); 


    public function getParam($name, $default = null) 
     { 
      if (array_key_exists($name, $this->params)) { 
       return $this->params[$name]; 
      } 

      return $default; 
     } 

je peux obtenir toute gamme db, mais si je veux atteindre le « hôte » uniquement avec la méthode getParam() comment dois-je prolonger La méthode getParam est-elle flexible et fonctionne-t-elle de façon indépendante à quel point le tableau est profond?

+0

Vous devez écrire une fonction récursive pour explorer le tableau –

+0

Si vous utilisez PHP 5.4, vous pouvez simplement utiliser ceci: '$ obj-> getParam (" db ") ['host'];' –

Répondre

0

Je ne sais pas s'il existe une meilleure solution, mais je ferais probablement une solution récursive. Quelque chose comme ceci:

public function getParam($name, $default = null, $arrayToCheck = false) 
{ 
    if (!$arrayToCheck) 
     $arrayToCheck = $this->params; 

    if (array_key_exists($name, $arrayToCheck)) { 
     return $arrayToCheck[$name]; 
    } 

    // if we get here, we haven't found it 
    foreach($arrayToCheck as $arrayItem) 
    { 
     if (is_array($arrayItem)) 
     { 
      return $this->getParam($name, $default, $arrayItem); 
     } 
    } 


    return $default; 
} 

Cela va récursive chasser dans votre tableau pour votre clé et retourner la première valeur qui correspond.