PHP实现Java字符偏移逻辑遇"A non-numeric value encountered"错误求助
问题解决:PHP字符ASCII运算的非数值错误
错误原因
Java的char类型本质是UTF-16编码的数值类型,可直接参与加减运算;但PHP中通过$text{$i}获取的是字符串类型的单个字符,无法直接和整数$key执行减法操作,这就是触发Warning: A non-numeric value encountered的核心原因。
修正后的PHP代码
需要先通过ord()函数将字符转换为对应的ASCII数值,运算完成后再用chr()函数转回字符:
$key = 6; $text = 'Sample Text'; for ($i = 0; $i < strlen($text); $i++) { $char = $text[$i]; // $text{$i}写法也等价 $ascii = ord($char); // 将字符转为ASCII数值 $ascii -= $key; // 执行减法运算 echo chr($ascii); // 转回字符并输出 }
验证结果
运行上述代码后,输出结果与Java代码完全一致:
M[gjf_N_rn
内容的提问来源于stack exchange,提问作者Just Wonderi'n Around
相关产品推荐
相关产品推荐

