首页 > 解决方案 > 我应该使用 PHP 'SORT_FLAG_CASE' 和按位 AND 或按位 OR 使用 sort() 函数对数组大小写不敏感吗?

问题描述

假设你得到了一个数组,比如,

$books  = array('Book21','BOOK22','book20');.

哪个是正确的运算符(按位与或按位或)与SORT_FLAG_CASESORT_STRING标志一起使用以不区分大小写对该数组进行排序?因为在http://php.net/manual/en/function.sort.php中,似乎只提到了按位 OR 运算符。

我目前使用 PHP 7.2 版。

谢谢你。

标签: php

解决方案


您需要按位或运算符|或只是加法运算符+

SORT_FLAG_CASE | SORT_STRING

如果您转储这些值,您会注意到它们的价值如下:

SORT_FLAG_CASE int(8)
SORT_STRING    int(2) 

或者,二进制:

SORT_FLAG_CASE 00001000
SORT_STRING    00000010

即,像这样的标志通常是只有一个位设置的整数。因此,通过对它们进行按位或运算,您可以打开所有组合标志:

00001000 SORT_FLAG_CASE
00000010 SORT_STRING    
00001010 SORT_FLAG_CASE | SORT_FLAG_CASE

如果您使用按位与,您将一无所获。

00001000 SORT_FLAG_CASE
00000010 SORT_STRING    
00000000 SORT_FLAG_CASE & SORT_FLAG_CASE

推荐阅读