Dieser Code wiederholt sich. Wie kann ich es kürzer machen? Vielleicht mit einer anonymen Funktion oder etwas?
foreach ($value as $wrong) {
if (starts_with($wrong, '%') and ends_with($wrong, '%')) {
$wrong = trim($wrong, '%');
if (contains($address, $wrong)) {
$corrected_address = str_replace($wrong, $key, $address);
break;
}
}
else {
$wrong = trim($wrong, '%');
if (ends_with($address, $wrong)) {
$corrected_address = str_replace($wrong, $key, $address);
break;
}
}
}
Vielen Dank
Hier ist meine kürzere Version:
foreach ($value as $wrong) {
$both = starts_with($wrong, '%') && ends_with($wrong, '%');
$wrong = trim($wrong, '%');
if ($both ? contains($address, $wrong) : ends_with($address, $wrong)) {
$corrected_address = str_replace($wrong, $key, $address);
break;
}
}
$both
wird wahrscheinlich umbenannt etwas beschreibender.
Wie wäre es damit:
foreach ($value as $wrong) {
$wrong = trim($wrong, '%');
if (starts_with($wrong, '%') && ends_with($wrong, '%')) {
if (contains($address, $wrong)) {
$corrected_address = str_replace($wrong, $key, $address);
break;
}
}elseif (ends_with($address, $wrong)) {
$corrected_address = str_replace($wrong, $key, $address);
break;
}
}
Sie brauchen keine Schleife, wenn Sie nach dem ersten brechen. Sie können array_filter verwenden, um die Übereinstimmungen zu ermitteln und dann mit dem ersten etwas zu tun array_map nimmt den Callback zuerst und das Array den zweiten, aber Array_filter macht das rückgängig? Es sind solche Dinge, die mich dazu bringen, PHP zu vermeiden.