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