Als PHP Entwickler muss man sich ja auch ab und zu mal um den Zusammenbau von URLs kümmern – entweder wird einem diese Arbeit von einem Framework abgenommen, oder man muss manuell ran. Mir geht es hier um den manuellen Weg. Man kann da folgendermaßen rangehen:
$url = "http://host/?id=10"; if($_GET["name"] != "") { $url .= '&name='$_GET["name"]; } if($_GET["country"] != "") { $url .= '&country='$_GET["country"]; } usw.
Wie man sieht, muss man für jeden eventuellen Parameter eigene if-Abfragen bauen, deren Muster ist aber immer das gleiche. Was spricht also dagegen, es folgendermaßen zu lösen?
$url = "http://host/?id=10"; $parameters = array( array("name"=>"name", "value"=>$_GET["name"]), array("name"=>"country", "value"=>$_GET["country"]) ); foreach($parameters as $parameter) { if($parameter["value"] != "") { $url .= '&'.$parameter["name"].'='.$parameter["value"]; } }
Ok, im ersten Moment ist der neue Code bei gleichem Ergebnis etwas umfangreicher, jedoch ergibt sich ein erheblicher Vorteil, wenn neue Parameter dazu kommen. Denn nun muss man einfach dem $parameters-Array ein neues Element hinzufügen und schon wird dieses mit in die URL eingebaut.