Vinzenz Mai: Komplexes if

Beitrag lesen

Hallo

da, && stärker bindet als || hast Du implizite Klammern für jede Zeile:

if(
($allregary[$i]['R1FLG'] == $iduserary[$allary['USERID']]['ROLLE']) && ($allregary[$i]['R1FLG'] == 1) ||
($allregary[$i]['R2FLG'] == $iduserary[$allary['USERID']]['ROLLE']) && ($allregary[$i]['R2FLG'] == 1) ||
($allregary[$i]['R3FLG'] == $iduserary[$allary['USERID']]['ROLLE']) && ($allregary[$i]['R3FLG'] == 1) ||
($allregary[$i]['R4FLG'] == $iduserary[$allary['USERID']]['ROLLE']) && ($allregary[$i]['R4FLG'] == 1))

  
if(  
    // Array-Element aus A1 und Array-Element aus A2 gleich sind  
    ($allregary[$i]['R1FLG'] == $iduserary[$allary['USERID']]['ROLLE'])  
         // und dazu das Array-Element aus A1 den Wert 1 hat  
         && ($allregary[$i]['R1FLG'] == 1)  
    // oder  
    ||  
    // die beiden nächsten Array-Elemente aus A1 und A2 gleich sind  
    ($allregary[$i]['R2FLG'] == $iduserary[$allary['USERID']]['ROLLE'])  
         // und dazu das Array-Element aus A1 den Wert 1 hat  
         && ($allregary[$i]['R2FLG'] == 1)  
    // und so weiter  
    ||  

das kann man umschreiben zu:

  
if (  
    // die ersten beiden Array-Elemente aus A1 und A2 haben den Wert 1  
    // dann sind sie auch gleich :-)  
    (      1 == allregary[$i]['R1FLG']  
        && 1 == $iduserary[$allary['USERID']]['ROLLE']  )  
    || // oder  
    // die nächsten beiden Array-Elemente aus A1 und A2 haben den Wert 1  
    // dann sind sie auch gleich :-)  
    (      1 == allregary[$i]['R2FLG']  
        && 1 == $iduserary[$allary['USERID']]['ROLLE'])  
    || // oder ...  
)  

was man umformen kann:

  
if (  
     // dieses Arrayelement muss unbedingt eine Eins enthalten  
     (1 == $iduserary[$allary['USERID']]['ROLLE'])  
     &&  
     (    1 == allregary[$i]['R1FLG']  
       || 1 == allregary[$i]['R2FLG']  
       || 1 == allregary[$i]['R3FLG']  
       // und so weiter ...  
   )  

Das heißt für deinen derzeitigen Ausdruck:
Er kann nur dann wahr werden, wenn das eine spezielle Arrayelement eine 1 enthält - und mindestens irgendeines der unterschiedlichen Arrayelemente
des anderen Arrays ebenfalls eine 1 enthält.

Wenn Deine Logik eine andere ist, dann ist Dein Ausdruck verkehrt ...

Freundliche Grüße

Vinzenz