Variablen außerhalb einer For-Each-Schleife benutzen

Papenburger

Erfahrenes Mitglied
Hallo,

ich habe eine frage. Folgenden Code benutze ich um eine Abfrage durchzuführen:
PHP:
function checkEntry($data)
{
    global $fehlercode;
    $readcfg=readCfg("service", $file_services, $spez=NULL, $encode=true);
    foreach($readcfg as $key=>$val)
    if($data[host_name]==$val[host_name]){$fehlercode="001";}
    elseif($data[service_description]==$val[service_description]){$fehlercode="002";}
    elseif($data[check_command]==$val[check_command]){$fehlercode="003";}
    elseif($data[max_check_attempts]==$val[max_check_attempts]){$fehlercode="004";}
    elseif($data[normal_check_interval]==$val[normal_check_interval]){$fehlercode="005";}
    elseif($data[retry_check_interval]==$val[retry_check_interval]){$fehlercode="006";}
    elseif($data[notification_interval]==$val[notification_interval]){$fehlercode="007";}
    elseif($data[contact_groups]==$val[contact_groups]){$fehlercode="008";}
    elseif($data[check_period]==$val[check_period]){$fehlercode="009";}
    elseif($data[notification_period]==$val[notification_period]){$fehlercode="010";}
    else{$fehlercode="000";}
    
    return($fehlercode);
}

Nun wird aber kein Wert zurückgegeben, warum und wie kann ich dies ändern?
 
Gib mal direkt vor der return-Anweisung mithilfe der var_dump()-Funktion den Wert der $fehlercode-Variable aus.
Ich hoffe du hast auch berücksichtigt, dass der Variablenwert bei jedem Durchlauf des foreach-Konstrukts überschrieben wird.
 
Dann steht da NULL drin. Nein leider nicht. Aber gut das du das sagst. Sobald er einen Fehler hat, soll er abbrechen...
 
Probier mal Folgendes:
PHP:
function checkEntry( $data )
{
	$retVal = '000';
	$errorMap = array(
		'host_name',
		'service_description',
		'check_command',
		'max_check_attempts',
		'normal_check_interval',
		'retry_check_interval',
		'notification_interval',
		'contact_groups',
		'check_period',
		'notification_period',
	);
	$config = readCfg("service", $file_services, NULL, true);
	foreach( $config as $val ) {
		foreach( $errorMap as $key => $name ) {
			if( $data[$name] == $val[$name] ) {
				$retVal = sprintf('%03u', $key+1);
				break 2;
			}
		}
	}
	return $retVal;
}
 
Danke aber da ist noch ein Fehler drin...

Er muss alle Werte gleich haben und nicht nur einen bis er abbricht... Also wenn W1-Datei mit Wert1-Formular und W2-D mit W2-F usw gleich sind dann soll er abbrechen.

Zudem gibt er trotzdem 000 aus obwohl in der Datei einträge vorhanden sind, die identisch mit denen aus dem Formular sind!
 

Neue Beiträge

Zurück