$speed=0; switch($speed){ case ($speed>=100): echo 150; break; case ($speed>=0): echo 50; break; } speed 初始化为0后,你猜最终打印的结果是谁,最终打印的是150 因为switch条件的case判断时只会有两种结果,true false 初始化speed为0 走到第一个case里面,speed 不大于等于100 返回false, 坑来了,,因为初始值为0, 0==false,所以他会直接打印150 而不是正常判断中打印50 注解: case: speed >=100 这里返回的是false 0与false是相等的,所以这里才会打印150 解决:根据需求考虑将初始化值设置为》0的 或者:将switch中设为true也可 $speed=0; switch(true) { case $speed>=50000: echo 150; break; case $speed >=3000: echo 100; break; case $speed >=0: echo 800; break; }