变量在不同条件下输出相同的结果

时间:2010-10-28 07:33:32

标签: php

第一个问题:对于device_id为2的情况,输出为2,但任何其他情况下输出仍为2.为什么会这样?

if ($line == "IMEI 358998018395510\r\n"){
     $device_id = 1;
     }elseif($line == "IMEI 352924028650492\r\n"){
     $device_id = 3;
     }else {
     $device_id = 2;
}

第二个问题:我想用以下内容替换上面的else语句:

..
elseif ($line == "$GPVTG,0,T,0,M,0,N,0,K,A*23\r\n"){
    $device_id = 2;
}

但问题是,解析器在上面挑选“$ GPVTG”作为未定义的字符串的一部分。认为它应该把它作为一个整体字符串,因为它是引号?

3 个答案:

答案 0 :(得分:3)

  1. 您的所有条件都不匹配,因此它会落入else子句。

  2. 双引号允许变量替换。转义$或使用单引号。

答案 1 :(得分:0)

在PHP中,用双引号编写的变量在运行时进行评估,$用于表示变量,因此您需要在条件中转义$

答案 2 :(得分:0)

我意识到我可以做以下事情并决定使用它。它工作得很好。感谢您的所有贡献。

switch ($lineTokens[0]){
                case "IMEI 358998018395510\r\n":
                    $device_id = 1;
                    break;
                case "IMEI 352924028650492\r\n":
                    $device_id = 3;
                    break;
                case '$GPVTG':
                    $device_id = 2;
                    break;

            }       

添加:与某些人建议的类似,我必须确定何时使用单引号或双引号,就像在最后一个CASE语句中一样,必要时转义它们。在爆炸$ line之后,我使用了$ linetokens而不是之前提交的$ line。这使我只能找到'$ GPVTG'的匹配而不是整个$ line,这不是唯一的。

相关问题