在这样的代码中:
<?php
$a = 'абв';
for($i = 0; $i < strlen($a); $i++)
{
echo $a[$i]>>6, ' ';
}
输出为 0 0 0 0 0 0
,这不是预期的结果。预期输出是值 3 和 2,具体取决于我们是处于 UTF-8 字符的开头还是结尾。
有什么问题吗?
最佳答案
尽管 PHP 提供的许多函数只是 C 对应函数的简单包装,但开发人员决定为位移运算符添加额外的检查。在 PHP 中,左移和右移总是返回 0(甚至不是 false,这会有意义)。
为了对字符进行位移位,需要使用 ord
函数将其包装起来:
<?php
$a = 'абв';
for($i = 0; $i < strlen($a); $i++)
{
echo ord($a[$i])>>6, ' ';
}
这会产生:3 2 3 2 3 2
正如预期的那样。
关于php - PHP中是否可以对字符进行位移操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31324361/