J'ai une octale que j'utilise pour définir des autorisations sur un répertoire. et je veux le comparer à une chaîne p> Quelle serait la meilleure façon de faire cette comparaison? P> P>
6 Réponses :
Le meilleur moyen est de:
if ('0777' != "0" . sprintf("%o", $permissions))
Il suffit de jeter l'entier comme:
if('0777' != "$permissions") { // do something }
$ autorisations n'est pas un entier, c'est une octale
@andrew Jetez un coup d'oeil à uk3.php.net/manual/fr/function. mkdir.php et vous verrez que mkdir () attend un int
hm ... type casting?
if ((string)$permissions != '0777') {
//do something
}
Pourquoi pas, dans votre cas, comparez simplement les deux valeurs numériques?
Comme ceci: p> Par exemple, la partie suivante du code: < / p> vous obtiendra: p>
Néanmoins, pour convertir une valeur à une chaîne contenant la représentation octale d'un numéro, vous pouvez utiliser sprintf code> strong>, et le spécificateur de type code> O stry>. p>
Je ne pense pas que c'est ce qu'il cherche. Ceci est en ce qui concerne les autorisations UNIX. 0777 équivaut à un + rwx
Faites-le l'inverse de l'inverse: Convertissez la chaîne en un numéro et comparez les chiffres:
if (intval($expectedPermissions, 8) != $permissions) { // 8 specifies octal base for conversion
// do something
}
Vérifiez la fonction BASE_CONVERT.
Représentation des chaînes octales d'un nombre p> Vous pouvez faire la conversion avec n'importe quel type hexagonal, octal .... p> p> p>