使用if语句的流控制

时间:2015-02-14 17:32:22

标签: php

我从云应用程序的各个用户那里获得了300+行数据。用户正在移动设备和计算机上使用Web应用程序。由于我们使用的是响应式设计,因此我们知道用户使用什么来访问应用程序。

我们对像这样的知名制造商感兴趣

<?php
$dbh = new PDO('mysql:host=localhost;dbname=qs', 'qs_root', 'lepasswort');
$fc = $dbh->prepare("select str from test_str");
$fc->execute();

$i = 0;
while($result = $fc->fetch(PDO::FETCH_ASSOC)){

$one = $result['str'];

$cmd = "/usr/bin/perl str_processor.pl  '$one' ";
$output = shell_exec($cmd);
$arr = explode( ',', $output);
$the_type = $arr[0];

if($the_type == 'samsung'){
echo 'samsung';
}

if($the_type == 'nokia'){
echo 'samsung';
}

if($the_type == 'iphone'){
echo 'samsung';
}
if($the_type == 'ipad'){
echo 'samsung';
}
else{
 echo 'exception';
 }
}
?>

知名品牌有samsungnokiaiphone等。

然而,有许多品牌并不为人所知,我们想忽略它们。

我的脚本看起来像我上面写的那样,只是我把实际代码留在了我的if之间。

当我运行脚本时,我得到exception意味着ifs中的所有代码都没有被执行。这里if是正确的方法吗?。

注意:

我已检查并反核对我的pl脚本及其正确,因此不可能。

1 个答案:

答案 0 :(得分:1)

您必须使用elseif,否则您将获得&#34;例外&#34;每次终端不是ipad。所有条件都是相互排斥的。

if ($the_type == 'samsung') {
    echo 'samsung';
} elseif ($the_type == 'nokia') {
    echo 'nokia';
} elseif ($the_type == 'iphone') {
    echo 'iphone';
} elseif ($the_type == 'ipad') {
    echo 'ipad';
} else {
   echo 'exception';
}

另一种方法是使用数组:

$models = ['samsung', 'nokia', 'iphone', 'ipad'];

if (in_array($the_type, $models))
    echo $the_type;
else
    echo 'exception';

如果您没有获得除&#34;例外情况&#34;之外的任何结果,请使用$the_type检查var_dump以确保其包含您希望的结果。