php - switch难道不是这样的写的吗? ssid去哪了?

查看:158
本文介绍了php - switch难道不是这样的写的吗? ssid去哪了?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

在别的群看到这个问题
ssid去哪了?

解决方案

我们可以在一些地方进行 echo 输出变量,如以下代码所示。

<?php
$filed = array(0, 707, 708, 'ssid');
$dd = array();

foreach ($filed as $value) {
    echo $value . "\n";
    switch ($value) {
        case 0:
            $filedStr = 'sindex';
        break;
        case 707:
            $filedStr = 'login';
        break;
        case 708:
            $filedStr = 'register';
        break;
        case 'ssid':
            $filedStr = 'ssid';
            echo $filedStr;
        break;
        
        default:
        break;
    }
}

在结果中,我们可以发现,echo $filedStr;这步并没有输出。

这个时候,就应该看PHP官方文档里,为什么会导致这样,原因就出于 switch。

PHP官方文档,什么,这是英文的,当然也有中文的。里面有句话:

Attention if you have mixed types of value in one switch statemet it can make you some trouble

当然底下给出了一种方案:

<?php

$string="2string";

switch($string)
{
    case (string) 1:
        echo "this is 1";
        break;
    case (string) 2:
        echo "this is 2";
        break;
    case '2string':
        echo "this is a string";
        break;
}

?>

里面提到了 PHP 用了动态类型转换,也就是这篇博客里讲的。

动态语言的变量类型是随存储的变量而变化的,即变量类型是根据具体环境而进行变化的。

当 $value 值为 'ssid' 时,执行到 case 0 的时候,要转换为整形和其做比较,因为转换之后相等,所以匹配不到后面的 'ssid' 。

这篇关于php - switch难道不是这样的写的吗? ssid去哪了?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆