Der binäre UND-Operator
17. August 2008 | 14:23:37
Manchmal sind es die kleinen Dinge, die einem das Leben schwer machen - wie im folgenden Beispiel.
Der Einsatz des binären UND-Operators funktionierte erst richtig nach Anwendung der Funktion intval():
Das Problem war, dass die Methode Menu::getMenuRights() die Rechte per mysqli_fetch_assoc() aus der Datenbank ausliest. Diese sind dort zwar als unsigned tinyint deklariert sind, werden aber durch Menu::getMenuRights() nicht als Integerwert, sondern als String zurück gegeben. Mittels intval() wird der Stringwert nun in einen Integerwert konvertiert.
Hätte ich mir den Rückgabewert gleich mittels var_dump() anzeigen lassen, dann hätte ich sofort gesehen, dass es sich um Daten des Typs String handelt. Naja, beim nächsten Mal ist man (hoffentlich) schlauer.
Der Einsatz des binären UND-Operators funktionierte erst richtig nach Anwendung der Funktion intval():
if($sm->getUserRights() & intval(Menu :: getMenuRights( MENUITEM_WORK ))){
...
}
Hätte ich mir den Rückgabewert gleich mittels var_dump() anzeigen lassen, dann hätte ich sofort gesehen, dass es sich um Daten des Typs String handelt. Naja, beim nächsten Mal ist man (hoffentlich) schlauer.

