PHP:如何将0777(八进制)转换为字符串?

时间:2010-07-13 17:41:47

标签: php

我有一个用于设置目录权限的八进制文件。

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

我想将它与字符串

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

进行此比较的最佳方法是什么?

6 个答案:

答案 0 :(得分:6)

为什么不在你的情况下,只比较两个数值?

像这样:

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


仍然,要将值转换为包含数字的八进制表示的字符串,您可以使用 sprintf o类型说明符

例如,以下代码部分:

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

会得到你:

string(4) "0777"

答案 1 :(得分:4)

反之亦然:将字符串转换为数字并比较数字:

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

答案 2 :(得分:2)

最好的方法是:

if (0777 != $permissions)

PHP识别八进制文字(如你的作业所示)。

也就是说,你也可以用字符串比较字符串而不是整数:

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

答案 3 :(得分:2)

检查base_convert函数。

数字的八进制字符串表示

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

您可以使用任何类型的十六进制,八进制....

进行转换

答案 4 :(得分:0)

简单地转换整数:

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

还有另一种方法将$权限放在双引号中也会使PHP将其识别为字符串:

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

答案 5 :(得分:-1)

嗯...型铸造?

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

我不知道以后会影响到它。 (LAWL我很慢)