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

And*_*rew 6 php

我有一个八进制,我用来设置目录的权限.

$permissions = 0777;
mkdir($directory, $permissions, true)
Run Code Online (Sandbox Code Playgroud)

我想将它与字符串进行比较

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

这种比较最好的方法是什么?

Pas*_*TIN 6

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

像这样 :

if (0777 != $permissions) {
    //do something
}
Run Code Online (Sandbox Code Playgroud)


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

例如,以下代码部分:

var_dump(sprintf("%04o", 0777));
Run Code Online (Sandbox Code Playgroud)

会得到你:

string(4) "0777"
Run Code Online (Sandbox Code Playgroud)


Art*_*cto 2

最好的办法是:

if (0777 != $permissions)
Run Code Online (Sandbox Code Playgroud)

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

也就是说,您还可以将字符串而不是整数与以下内容进行比较:

if ('0777' != "0" . sprintf("%o", $permissions))
Run Code Online (Sandbox Code Playgroud)