Nu har jeg ikke testet på din funktion, og du har ikke beskrevet dit problem, men du får lige lidt input alligevel:
Se nedenstående eksempel:
- $str = "test";
- $result1 = $str[1];
- $result2 = $str{1};
- $result3 = substr($str, 1, 1);
Alle $result variable kommer til at indeholde samme værdi - i dette tilfælde strengen "e".
Hvis du har problemer med din if sætning, så kan du for det første tage de enkelte led ud og teste om de fungerer som du har forventet. Jeg har nogengange oplevet at PHP ikke opfører sig som ventet ved boolske udtryk, men det løser jeg som regel ved at pakke hvert led ind i paranteser - ala:
- if ((condition1) or (condition2) or (condition3)) { ... }
- if ((condition1) or ((condition2) and (condition3)) { ... }
Jeg ved ikke hvad det er du har tænkt dig med følgende linje:
- $j = ($i & 0xf000) >> 12;
Men jeg tror ikke det opfører sig som du har ventet.
Prøv at lave nogen reduced test cases med dine forskellige operationer. Det kan sikkert godt køre - men jeg tror ikke det giver det ønskede resultat.