Php 过滤器运算符位掩码(或位字段)
我正在与位掩码(或者是位字段?)作斗争。我不知道该怎么做了 我想创建一个DirectoryFilterEditor,它接受要过滤的内容的标志。我想我应该用这些比特来做这个: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
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,而不是点!点