Questo è un po 'strano, ma non riesco a capirlo: ho una matrice multidimensionale che ha una lunghezza sconosciuta e un numero sconosciuto di dimensioni e ho anche una serie di chiavi come questa:
$keys = array(0, 2, 1, 0);
Ora, se questa serie di chiavi avesse una determinata dimensione, avrei semplicemente potuto accedere alla mia matrice multidimensionale in questo modo:
$multidimensional_array[$keys[0]][$keys[1]][$keys[2]][$keys[3]];
Il problema è che non lo fa, la lunghezza della matrice delle chiavi cambierà molto. Qualcuno sa di un loop che può scorrere attraverso gli array di chiavi e quindi accedere di conseguenza all'array multidimensionale?
risposte:
1 per risposta № 1Supponendo tale matrice:
$multidimensional_array = array(
0 => array(
2 => array(
1 => array(
0 => "value"
)
)
)
);
E queste chiavi:
$keys = array(0, 2, 1, 0);
Tu puoi fare:
$current = $multidimensional_array;
foreach($keys as $key) {
$current = $current[$key];
}
var_dump($current); //"value"
Modificare:
Ecco un esempio con riferimenti.
$current = &$multidimensional_array; // <- $current is reference
foreach($keys as $key) {
$current = &$current[$key]; // <- $current is reference again
}
var_dump($current); //"value"
$current = "otherValue"; // $multidimensional_array[0][2][1][0] value changed to "otherValue"
unset($current); // remove reference to be sure you won"t break something later by an accident