Leggere valore da array multidimensionale a chiavi dinamiche

otto9due

Utente Attivo
22 Feb 2014
591
25
28
Buonasera e "quasi" buon anno a tutti. Mi trovo con un problema che non riesco a risolvere e quindi chiedo a voi qualche idea..
In pratica devo leggere il valore di un array multidimensionale ma le chiavi sono dinamiche (le incapsulo in un array che ricevo), ecco un esempio di come il framework Symfony ha risolto il problema:

PHP:
$persons = array('a' => array('b' => 5.7));
$accessor = PropertyAccess::createPropertyAccessor();
echo $accessor->getValue($persons, '[a][b]'); // 5.7

Ho fatto parecchi test simulando el più svariate soluzioni, ma ancora non sono arrivato ad una soluzione. Il problema è banalmante questo:

PHP:
<?php
$arr = [1,2,3=>[5,6,7],4];

$test_chiavi = [2][0];

// Chiaramente mi dice: Array to string conversion
var_dump($arr.$test_chiavi);

In pratica devo poter accedere al valore ma non riesco. Spero sia chiaro il discorso.
 
Ho trovato una soluzione girando online, devo dire molto semplice ma efficente, la posto anche qui, così che sia presente per chi la cercherà in futuro:
PHP:
  public function selectValueToValidate(array $arr, $path)
    {
        $parts = explode('.', $path);
        $ret = $arr;
        foreach ($parts as $part) {
            $ret = $ret[$part];
        }
        return $ret;
    }

che poi con un lieve refactoring può diventare:
PHP:
  public function selectValueToValidate(array $arr, $path)
    {
        $parts = explode('.', $path);
        foreach ($parts as $part) {
            $arr = $arr[$part];
        }
        return $arr;
    }
 
Ultima modifica:

Discussioni simili