2013-03-13 101 views
1

我有以下代碼:爲什麼我的PHP按位比較不能產生我期望的結果?

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

它輸出0。但是,我期望它輸出2,因爲其ASCII碼二進制表示中的ac是奇數(我相信97和99)。

看來,無論我傳遞給str_split,我總是以0結尾。這是爲什麼,我怎樣才能成功地計算字符串中的第一位設置的字節?

回答

1

您必須首先獲取ASCII碼,您的代碼不會這樣做。

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

?> 
+0

嗯,好吧,我想這是有道理的,謝謝。我認爲首先獲得整數值是多餘的,但事實並非如此。 我已經得到了它的工作,謝謝,儘管我使用'hexdec(bin2hex($ char))'而不是'ord($ char)',以允許多字節字符(我簡化了我的問題中的例子)。 – Alex 2013-03-13 15:48:24

相關問題