Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/272.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 过滤器运算符位掩码(或位字段)_Php_Bit Fields_Bitmask_Filter Iterator - Fatal编程技术网

Php 过滤器运算符位掩码(或位字段)

Php 过滤器运算符位掩码(或位字段),php,bit-fields,bitmask,filter-iterator,Php,Bit Fields,Bitmask,Filter Iterator,我正在与位掩码(或者是位字段?)作斗争。我不知道该怎么做了 我想创建一个DirectoryFilterEditor,它接受要过滤的内容的标志。我想我应该用这些比特来做这个: const DIR_NO_DOT = 1; const DOT = 2; const DIR = 3; const FILE = 4; 因为点也被认为是目录,所以我也希望能够区分这两者。如果我是对的,我认为这样的事情应该是可能的: DirectoryFilterIterator::D

我正在与位掩码(或者是位字段?)作斗争。我不知道该怎么做了

我想创建一个DirectoryFilterEditor,它接受要过滤的内容的标志。我想我应该用这些比特来做这个:

const DIR_NO_DOT = 1;
const DOT        = 2;
const DIR        = 3;
const FILE       = 4;
因为
也被认为是
目录
,所以我也希望能够区分这两者。如果我是对的,我认为这样的事情应该是可能的:

DirectoryFilterIterator::DIR & ~DirectoryFilterIterator::DOT
const DOT  = 1;
const DIR  = 2;
const FILE = 4;
换句话说,这应该过滤掉
DIR
,除非它是
DOT
。但是我完全被困在如何让过滤工作上(在
accept
方法中):


…特别是因为我一直在否定,我有点迷路了。如何使其正常工作?

使用位掩码时,需要将其值设置为二的幂。如果将DIR设置为3,则表示它与DIR_NO_DOT和DOT combined同义

尝试将其值设置为以下值:

DirectoryFilterIterator::DIR & ~DirectoryFilterIterator::DOT
const DOT  = 1;
const DIR  = 2;
const FILE = 4;
现在,您可以使用表达式
DIR&!检查项目是否是DIR,而不是点!点