Der binäre UND-Operator
17. August 2008
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, 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 ))){
...
}
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, 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.
Kommentare, Ideen oder Vorschläge willkommen!
HILFE
Code-Beispiele werden mit den BBCodes [code][/code] dargestellt.
Jedes Tag muss eine Zeile für sich allein haben, d.h der Beispiel-Code
muss wirklich ZWISCHEN den Tags stehen. Beispiel:
Alles was zwischen den beiden Tags [register] und [/register] eingetragen wird, ist nur für registrierte (und eingeloggte) User sichtbar.
[code] ACHTUNG! HIER UMBRUCH WICHTIG. TAG [code] MUSS ALLEIN STEHEN
#include <stdio.h>
int main( void ){
return 0;
} ACHTUNG! HIER UMBRUCH WICHTIG. NACHFOLGENDES TAG [/code] MUSS ALLEIN STEHEN
[/code]Alles was zwischen den beiden Tags [register] und [/register] eingetragen wird, ist nur für registrierte (und eingeloggte) User sichtbar.
Dein Name *
Deine Email
Deine Website
Vorschau