Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
mehrere if abfragen [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr
ebiz-webhosting
- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
mehrere if abfragen


 
iberican
19-10-2007, 13:35 
 
hallo,
ich habe mehrere if abfragen, wenn keine der abfragen erfüllt ist soll am ende eine else bedingung kommen, doch leider funktioniert das nicht mit nachstehendem code

if (preg_match('#\s\d.\s\w+\s\d+\/\d\d#',$content,$target1)){
foreach ($target1 as $value){
print $value . "reg1<br>";
} }
if (preg_match('#\s(\w\w\s\w+\s\d+\/\d\d)#',$content,$target2)) {
foreach ($target2 as $value){
print $value . "reg2<br>";
}}
if (preg_match('#(\w\w\w\s\w+\s\d+\/\d\d)#',$content,$target3)) {
foreach ($target3 as $value){
print $value . "reg3<br>"; }}
if (preg_match('#(\w\s\w+\s\d+\/\d\d)#',$content,$target4)) {
foreach ($target4 as $value){
print $value . "reg4<br>";
}}
if (preg_match('#\s(\w\w\w\w\s\w+\s\d+\/\d\d)#',$content,$target5)) {
foreach ($target5 as $value){
print $value . "reg5<br>";
} }
else
echo "keine Übereinstimmungen";

ich bin mir auch gar nicht sicher, ob das mit dem else am ende richtig ist, da das doch eigentlich nur ausgeführt wird, wenn die letzten if bedingung nicht greift.
gibt es denn etwas, wie " wenn alle if bedigungen false" dann echo
vielen dank für tipps

 
jahlives
19-10-2007, 13:52 
 
Und elseif hilft dir nicht weiter? Ansonsten könntest du in einem abschliessenden if deine $target Vars prüfen und wenn alle leer sind deine Meldung ausgebgen

 
xkl1986
19-10-2007, 13:52 
 
guck dir mal elseif(){} an

 
ministry
19-10-2007, 13:53 
 
Das wäre viel schöner mit einem switch... case mit einem default am Schluss.

 
H2O
19-10-2007, 14:02 
 
Erst mal: formatiere deinen Code bitte so, dass man ihn auch lesen kann
Sicher geht das n icht mit deinem Code, da sich das else ja nur auf das letzte if bezieht. Wenn es sich im exklusive if's handelt, dh. es kann nur eines zutreffen, benutze elseif:if(preg_match('#sd.sw+sd+/dd#',$content,$target1)){
foreach ($target1 as $value){
print $value . "reg1<br>";
}
}
elseif(preg_match('#s(wwsw+sd+/dd)#',$content,$target2)) {
foreach ($target2 as $value){
print $value . "reg2<br>";
}
}
elseif(preg_match('#(wwwsw+sd+/dd)#',$content,$target3)) {
foreach ($target3 as $value){
print $value . "reg3<br>";
}
}
elseif (preg_match('#(wsw+sd+/dd)#',$content,$target4)) {
foreach ($target4 as $value){
print $value . "reg4<br>";
}
}
elseif(preg_match('#s(wwwwsw+sd+/dd)#',$content,$target5)) {
foreach ($target5 as $value){
print $value . "reg5<br>";
}
}
else{
echo "keine Übereinstimmungen";
}Wenn hingegen mehrere Bedingungen zutreffen können, definiere eine Hilfsvariable:$hilfsvar = false;
if(preg_match('#sd.sw+sd+/dd#',$content,$target1)){
foreach ($target1 as $value){
print $value . "reg1<br>";
}
$hilfsvar = true;
}
if(preg_match('#s(wwsw+sd+/dd)#',$content,$target2)) {
foreach ($target2 as $value){
print $value . "reg2<br>";
}
$hilfsvar = true;
}
if(.....
....
if(!$hilfsvar){
echo "keine Übereinstimmungen";
}

 
iberican
19-10-2007, 14:15 
 
@h2o
danke sehr.
habe es zunächst mit elseif versucht, doch wie du auch gleich ergänst hast, sind mehrer bedingungen wahr, so dass elseif abgebroche hat als eine abfrage true wahr und somit nicht mehr die nachfolgenden regex getestethat.
der zweit vorschlag sieht hingegen sehr hilfreich aus,
da wären wir dann aber wieder beim klassischen if

thx

 
tontechniker
19-10-2007, 18:27 
 
Du solltest uns verraten was du eigentlich machen willst - diese Wiederholung ist jedenfalls sinnlos.

 
TobiaZ
19-10-2007, 19:07 
 
ich würde ne schleife reinpacken. Ist viel einfacher zu warten.


Alle Zeitangaben in WEZ +2. Es ist jetzt 23:05 Uhr.