我怎样才能删除 PHP int 中的位标志?
how can i remove a bit flag in PHP int?
假设我有
$flags=JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE;
我怎样才能从 $flags
中删除 JSON_UNESCAPED_SLASHES?
不是"C method"它只是应用bitwise operators
$flags=JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE;
var_dump($flags & JSON_UNESCAPED_SLASHES); // flag should be set to 1
$flags &= ~JSON_UNESCAPED_SLASHES; // remove it
var_dump($flags & JSON_UNESCAPED_SLASHES); // flag should be set to 0
使用the C method
$flags &= ~JSON_UNESCAPED_SLASHES;
如果您无法直接访问标志,因为稍后会在第 3 方代码 中添加它们:
<?php
function notMyFunction($flags)
{
$finalFlags = $flags | FLAG_I_DONT_WANT;
// ...
}
有这个技巧:
<?php
notMyFunction(FLAG_I_DONT_WANT - 1);
假设我有
$flags=JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE;
我怎样才能从 $flags
中删除 JSON_UNESCAPED_SLASHES?
不是"C method"它只是应用bitwise operators
$flags=JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE;
var_dump($flags & JSON_UNESCAPED_SLASHES); // flag should be set to 1
$flags &= ~JSON_UNESCAPED_SLASHES; // remove it
var_dump($flags & JSON_UNESCAPED_SLASHES); // flag should be set to 0
使用the C method
$flags &= ~JSON_UNESCAPED_SLASHES;
如果您无法直接访问标志,因为稍后会在第 3 方代码 中添加它们:
<?php
function notMyFunction($flags)
{
$finalFlags = $flags | FLAG_I_DONT_WANT;
// ...
}
有这个技巧:
<?php
notMyFunction(FLAG_I_DONT_WANT - 1);