Ich habe gerade einige Änderungen an einem WordPress-Blog vorgenommen und festgestellt, dass sie parse_str
(http://php.net/parse_str) zum Parsen verwenden und ihre optionalen Parameter auf eine Funktion einstellen.Gibt es einen Vorteil parse_str für optionale Funktionsparameter im Vergleich zu einem Array?
Ich frage mich, ob es einen Vorteil gegenüber dem Senden eines Arrays ist?
Beispiele:
Mit Array:
$blahOptions = array(
'option_1' => true,
);
BlahArray($blahOptions);
function BlahArray($options = array()) {
$defaults = array(
'option_1' => false,
'option_2' => 'blah',
);
// this would probably be in a function to be used everywhere
foreach ($defaults as $defaultOption => $defaultValue) {
if (!isset($options[$defaultOption])) $options[$defaultOption] = $defaultValue;
}
}
Mit parse_str
:
$blahOptions = 'option_1=1';
BlahString($blahOptions);
function BlahString($options = '') {
$defaults = array(
'option_1' => false,
'option_2' => 'blah',
);
parse_str($options, $defaults);
$options = $defaults;
}
Nur eine Randnotiz, warum nicht Array_merge anstelle der Foreach verwenden? $ options = array_merge ($ defaults, $ options); – Ickmund
Im obigen Beispiel würde array_merge funktionieren, aber array_merge und array_merge_recursive machen funky Dinge mit verschachtelten Arrays und numerischen Schlüsseln. array_merge: Mit numerischen Schlüsseln werden die Schlüssel nicht ersetzt, sondern die Schlüssel hinzugefügt und neu angeordnet. array_merge_recursive: Es werden verschachtelte Arrays zusammengeführt, die beim Senden von Optionen an eine Funktion meistens nicht erwünscht sind. Es macht auch die gleichen Dinge mit numerischen Tasten wie array_merge. –