我有一个用于设置目录权限的八进制文件。
$permissions = 0777;
mkdir($directory, $permissions, true)
我想将它与字符串
进行比较$expectedPermissions = '0777'; //must be a string
if ($expectedPermissions != $permissions) {
//do something
}
进行此比较的最佳方法是什么?
答案 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我很慢)