2010-07-13 14 views
6

Ho un ottale che sto usando per impostare i permessi su una directory.PHP: Come convertire 0777 (un ottale) in una stringa?

$permissions = 0777; 
mkdir($directory, $permissions, true) 

E voglio confrontarlo con una stringa

$expectedPermissions = '0777'; //must be a string 
if ($expectedPermissions != $permissions) { 
    //do something 
} 

Quale sarebbe il modo migliore per fare questo confronto?

risposta

2

Il modo migliore è:

if (0777 != $permissions) 

PHP riconosce letterali ottale (come assegnazione mostra).

Detto questo, si potrebbe anche confrontare le stringhe, invece di interi con:

if ('0777' != "0" . sprintf("%o", $permissions)) 
0

semplicemente gettato l'intero in questo modo:

if('0777' != (string)$permissions) { // do something } 

C'è anche un altro modo di mettere $ permessi tra virgolette sarà anche fare in modo che PHP lo riconosca come una stringa:

if('0777' != "$permissions") { // do something } 
+0

Questo non funziona; '(stringa) $ permessi' darà '511'. – Artefacto

+0

Perché darà 511? –

+0

$ permessi non è un numero intero, è un ottale – Andrew

-1

Hm ... Tipo di fusione?

if ((string)$permissions != '0777') { 
//do something 
} 

Non so che interesserà in seguito. (LAWL I'm slowpoke)

6

Perché non, nel tuo caso, basta confrontare i due valori numerici?

Ti piace questa:

if (0777 != $permissions) { 
    //do something 
} 


Eppure, per convertire un valore ad una stringa contenente la rappresentazione ottale di un numero, è possibile utilizzare sprintf, e il o indicatore di tipo.

Ad esempio, il seguente porzione di codice:

var_dump(sprintf("%04o", 0777)); 

si arriva:

string(4) "0777" 
+0

Non penso che sia quello che sta cercando. Questo riguarda le autorizzazioni unix. 0777 equivarrebbe a un + rwx –

+1

+1 per 'sprintf ("% o ")' !! Questo è quello che stavo cercando! – TMS

4

farlo nel contrario: convertire la stringa in un numero e confrontare i numeri:

if (intval($expectedPermissions, 8) != $permissions) { // 8 specifies octal base for conversion 
    // do something 
} 
2

Controllare la funzione base_convert.

rappresentazione di stringa ottale di un numero

$str = base_convert((string) 00032432, 10, 8); 

si può fare la conversione con qualsiasi tipo esadecimale, ottale ....

Problemi correlati