Wie kann ich array_walk_recursive()
anstelle davon verwenden:
function check_value($val){
if(is_array($val)){
foreach($val as $key => $value)
$val[$key] = check_value($value);
return $val;
}
return clean_value($val);
}
?
Wie kann ich array_walk_recursive()
anstelle davon verwenden:
function check_value($val){
if(is_array($val)){
foreach($val as $key => $value)
$val[$key] = check_value($value);
return $val;
}
return clean_value($val);
}
?
Ich denke, das sollte das Gleiche tun. Beachten Sie, dass das Argument einer Funktion als Referenz übergeben wird (d.h. &$value
).
array_walk_recursive($array, function(&$value) {
$value = clean_value($value);
});
Für ältere PHP-Versionen:
function check_value(&$value) {
$value = clean_value($value);
}
array_walk_recursive($array, 'check_value');
Ich würde die clean_value-Funktion neu schreiben, um ein Referenzargument zu verwenden. Beispielsweise sind diese beiden Code-Schnipsel funktional identisch:
1:
function clean_value($value) {
// $value manipulieren
return $value;
}
$value = clean_value($value);
und
2:
function clean_value(&$value) {
// $value manipulieren
}
clean_value($value);
Für die letztere (2) Methode können wir sie in array_walk_recursive wie folgt verwenden:
array_walk_recursive($value_tree, 'clean_value');
Wenn wir clean_value nicht bearbeiten können, würde ich es wie folgt lösen:
$clean_by_reference = function(&$val) {
$val = clean_value($val);
};
array_walk_recursive($value_tree, $clean_by_reference);
Ich hoffe, das hilft!
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.