Axel Richter: Funktion mit Parametern

Beitrag lesen

Diese Funktion arbeitet fehlerfrei:

$myarr = array("v1" => "text1", "v2" => "text2", "v3" => "text3");
function get_param2($myarr){
while(list($key, $val) = each($myarr)){
  if ($key == "v2"){
   echo $key . "=>" . $val . "<br>";
  }
}
}
get_param2($myarr);

Ich muss aber den String den ich mit $key vergleiche als einen Parameter übergeben, also versuche ich folgendes:

$myarr = array("v1" => "text1", "v2" => "text2", "v3" => "text3");
function get_param1($myarr, $val){
while(list($key, $val) = each($myarr)){
  if ($key == $val){
   echo $key . "=>" . $val . "<br>";
  }
}
}
$val = "v2";
get_param1($myarr, $val);

Leider so funktioniert es nicht. Ich habe schon getestet mit
echo $key;
echo $val;
geprüft ob die Variablen gesetzt sind und ein Wert haben, alles ist in Ordnung, sogar den Type habe ich gepfüft, beide sind Strings, trotzdem werden $key und $val nicht verglichen. Hat jemand eine Idee warum?

Ja, nach

while(list($key, $val) = each($myarr)){
ist $key == "v1" und $val == "text1"

Du verwendest die Variable $val für zwei Dinge. Einmal als Übergabe-Parameter für dem Key, den du ausgeben willst und dann wieder als Variable für die Werte des Arrays. Nimm als Übergabe-Parameter $sKey für seachKey.
$myarr = array("v1" => "text1", "v2" => "text2", "v3" => "text3");
function get_param1($myarr, $sKey){
 while(list($key, $val) = each($myarr)){
  if ($key == $sKey){
   echo $key . "=>" . $val . "<br>";
  }
 }
}
$sKey = "v2";
get_param1($myarr, $val);

Gruß

Axel