为什么我的PHP按位比较没有产生我期望的结果?

时间:2013-03-13 15:38:15

标签: php comparison

我有以下代码:

foreach(str_split('abcd') as $char) {
    $total += ($char & 1);
}
echo $total;

输出0。但是,我希望它输出2,因为它们的ASCII二进制表示中的ac是奇数(我相信97和99)。

似乎无论我传递给str_split的是什么,我总是以0结束。为什么这样,以及如何成功计算第一个位设置的字符串中的字节?

1 个答案:

答案 0 :(得分:1)

你必须首先获取ASCII码,你的代码不会这样做。

<?php
foreach(str_split('abcd') as $char) {
    $char=ord($char);  //Missed this?
    $total += ($char & 1);
}
echo $total;  // Outputs 2

?>