Ein etwas ungewöhnlicher Anwendungsfall, aber vielleicht können Sie helfen:
Ich habe die Schlüssel eines Wertes als separates Array. Es ist ziemlich einfach, den Wert des Arrays damit wie folgt zu ermitteln:
function whatEver(){
$array = array(
0 => array( 'other' ),
1 => array(
0 => array( 'other' ),
1 => array( 'value' )
),
);
$keys = array(
0 => '1',
1 => '1'
);
$result = $array;
foreach($keys as $key)
{
$result = $result[$key];
}
return $result;
}
Dies gibt das richtige Array / den richtigen Wert zurück:
Array
(
[0] => value
)
Aber was ist, wenn ich diesen Wert (wie unset ($ array [1] [1])) aus dem ursprünglichen Array löschen und das ursprüngliche $ array ohne den Wert zurückgeben möchte?
Wenn dies für eine beliebige Anzahl von Schlüsseln erforderlich ist, müssen Sie $result
bei jeder Iteration eine Referenz zuweisen und diese im letzten Schritt deaktivieren:
$result = &$array;
$last = array_pop($keys);
foreach ($keys as $key) {
$result = &$result[$key];
}
unset($result[$last]);
Beachten Sie, dass Sie den endgültigen Schlüssel etwas anders behandeln müssen (den in $last
). Wenn Sie nur eine Referenz auf die letzte Ebene setzen, entfernt das Nicht-Set nur die Referenz, nicht das eigentliche Element.
Siehe https://3v4l.org/0a5Nv
Dieser Artikel stammt aus dem Internet. Bitte geben Sie beim Nachdruck die Quelle an.
Bei Verstößen wenden Sie sich bitte [email protected] Löschen.
Lass mich ein paar Worte sagen