PHP不恰当的比较行为


php improper comparison behavior

$string = '540';
if (strlen ($string >= 34)){
    print_r((substr($string, 0, 30) . "..."));
} else {
    print_r(($string));
}

如果$string大于34个字符,则应在其后面加上"…",否则仅打印字符串。

我认为发生的事情是解释器在进行比较时假设字符串是一个数字。

如果我把$string改成

它也会有同样的问题
$string = '540 rocks !'

为什么会这样?

应该是:

if (strlen($string) >= 34)) {

if ($string >= 34)){

如果要测试的是字符串长度,只需更改这一行:

if ($string >= 34)){

这:

if (strlen($string) >= 34)){