Scripts
array_keypath
Soms is het handig om het pad an sich mee te geven, bijvoorbeeld wanneer je een array op een waarde diep diep in de hiƫrarchie verborgen wilt sorteren. Hij geeft NULL terug wanneer het pad niet bestaat. De functie ondersteund ongeveer dezelfde syntax als Javascript. Dat wil zeggen, je kan je hiƫrarchie beschrijven als in PHP, a , maar ook punten mogen gebruikt worden als scheiding. Hij is redelijk relaxt met het mixen van beide notaties. zo zal array [al fa]. maar ook array.42.al fa.beta.gamma.alfa of array [al fa] .beta..gamma werken. Merk op dat spaties ook in de namen mogen voorkomen (net zoals bij echte arrays) en dat je die dus niet als scheidingsteken kan gebruiken. Spaties tussen de haakjes is wel toegestaan.
arraykeypath
<?php
function array_keypath($array, $path) {
if(!is_array($path)) {
$path = preg_split('/[\s\.]*\[([^\]]+)\]\s*|\.+/', $path, 0, PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY);
}
while(($step = array_shift($path)) !== null) {
if(!isset($array[$step])) {
return null;
}
$array = $array[$step];
}
return $array;
}
?>
Wat testdata, ter inspiratie:
<?php
$array = array(
'array' => array(
42 => array(
'al fa' => array(
'beta' => array(
'gamma' => array(
'alfa' => 'correct'
)
)
),
'aalfa' => 'wrong'
)
)
);
$path1 = 'array[42] [al fa] . [beta][gamma][alfa]';
$path2 = 'array.42.al fa.beta.gamma.alfa';
$path3 = 'array[42][al fa] .beta..gamma[alfa]';
var_dump(array_keypath($array, $path1)); // "correct"
var_dump(array_keypath($array, $path2)); // "correct"
var_dump(array_keypath($array, $path3)); // "correct"
?>
Reacties
0