switch 0 和 ‘0’ 的时候 case 'all' 会产生两种不同的结果

php Switch 的一个问题

switch 0 和 ‘0’ 的时候 case 'all' 会产生两种不同的结果

代码
!empty($params['nav']) ? '' : $params['nav'] ='0' ;
        var_dump( $params['nav'] );
        switch ($params['nav']){
            case 'all':
                var_dump($params);
                var_dump(11);die();
            break;
            default:
                var_dump(444);die();
        }

当 !empty($params['nav']) ? '' : $params['nav'] = 0 ;
运行结果 = 11
当 !empty($params['nav']) ? '' : $params['nav'] = ‘0’ ;
运行结果 = 44

正常的结果来说 $params['nav'] 在什么情况下都不等于 'all' 才对

有人懂这个是怎么回事吗

var_dump是干什么的