Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何简化PHP中的多重切换?_Php_While Loop_Switch Statement - Fatal编程技术网

如何简化PHP中的多重切换?

如何简化PHP中的多重切换?,php,while-loop,switch-statement,Php,While Loop,Switch Statement,有可能简化这段代码吗?我试图把所有的情况下,在一个开关,但总是会打破在第一个案件,我需要在html的所有回声的。什么是可能的?谢谢大家! $resultservices = mysqli_query($connecDB,"SELECT * FROM clients WHERE id_client = $id_client"); while($rowservice = mysqli_fetch_array($resultservices)){ $php = (int)$rowservic

有可能简化这段代码吗?我试图把所有的情况下,在一个开关,但总是会打破在第一个案件,我需要在html的所有回声的。什么是可能的?谢谢大家!

$resultservices = mysqli_query($connecDB,"SELECT * FROM clients WHERE id_client = $id_client");

while($rowservice = mysqli_fetch_array($resultservices)){
    $php = (int)$rowservice['php'];
    $java = (int)$rowservice['java'];
    $ruby = (int)$rowservice['ruby'];
    $node = (int)$rowservice['node'];
}

// Values can be "1" or "0". Example: php:1, java:1, ruby:0, node:1

switch ($php) {
    case 0: break;
    case 1: echo "<li>php</li>"; break;
}

switch ($java) {
    case 0: break;
    case 1: echo "<li>java</li>"; break;
}

switch ($ruby) {
    case 0: break;
    case 1: echo "<li>ruby</li>"; break;
}

switch ($node) {
    case 0: break;
    case 1: echo "<li>node</li>"; break;
}
$resultservices=mysqli\u query($connecDB,“SELECT*FROM clients,其中id\u client=$id\u client”);
while($rowservice=mysqli\u fetch\u数组($resultservices)){
$php=(int)$rowservice['php'];
$java=(int)$rowservice['java'];
$ruby=(int)$rowservice['ruby'];
$node=(int)$rowservice['node'];
}
//值可以是“1”或“0”。示例:php:1、java:1、ruby:0、节点:1
开关($php){
案例0:断裂;
案例1:echo“
  • php
  • ”中断; } 交换机($java){ 案例0:断裂; 案例1:echo“
  • java
  • ”中断; } 交换机($ruby){ 案例0:断裂; 案例1:echo“
  • ruby
  • ”中断; } 交换机($node){ 案例0:断裂; 案例1:回声“
  • 节点”
  • ”中断; }
    虽然我不确定您想做什么,但是:

    $resultservices = mysqli_query($connecDB,"SELECT * FROM clients WHERE id_client = $id_client");
    
    while($rowservice = mysqli_fetch_array($resultservices)){
        $service[1] = (int)$rowservice['1'];
        $service[2] = (int)$rowservice['1'];
        $service[3] = (int)$rowservice['0'];
        $service[4] = (int)$rowservice['1'];
    }
    
    foreach ($service as $k=>$v) {
        if ($v) {
            echo "<li>service".$k."</li>";
        }
    }
    
    $resultservices=mysqli\u query($connecDB,“SELECT*FROM clients,其中id\u client=$id\u client”);
    while($rowservice=mysqli\u fetch\u数组($resultservices)){
    $service[1]=(int)$rowservice['1'];
    $service[2]=(int)$rowservice['1'];
    $service[3]=(int)$rowservice['0'];
    $service[4]=(int)$rowservice['1'];
    }
    foreach($k=>v的服务){
    如果有的话(五美元){
    echo“
  • 服务”$k.“
  • ”; } }
    [编辑]我看到我们有了一些新的变量

    while($rowservice = mysqli_fetch_array($resultservices)){
        $service['php'] = (int)$rowservice['php'];
        $service['java'] = (int)$rowservice['java'];
        $service['ruby'] = (int)$rowservice['ruby'];
        $service['node'] = (int)$rowservice['node'];
    }
    
    foreach ($service as $k=>$v) {
        if ($v) {
            echo "<li>".$k."</li>";
        }
    }
    
    while($rowservice=mysqli\u fetch\u数组($resultservices)){
    $service['php']=(int)$rowservice['php'];
    $service['java']=(int)$rowservice['java'];
    $service['ruby']=(int)$rowservice['ruby'];
    $service['node']=(int)$rowservice['node'];
    }
    foreach($k=>v的服务){
    如果有的话(五美元){
    回声“
  • ”$k.“
  • ”; } }
    虽然实际上,您所做的只是输出MySQL的最后一行,所以您也可以这样做

        $resultservices = mysqli_query($connecDB,"SELECT * FROM clients WHERE id_client = '".mysqli_real_escape_string($connecDB, $id_client)."' ORDER BY id DESC LIMIT 1");
    
        while($rowservice = mysqli_fetch_array($resultservices)){
            if ($rowservice['php']) {
                echo "<li>php</li>"
            }
            if ($rowservice['java']) {
                echo "<li>java</li>"
            }
            if ($rowservice['ruby']) {
                echo "<li>ruby</li>"
            }
            if ($rowservice['node']) {
                echo "<li>node</li>"
            }
        }
    
    $resultservices=mysqli\u query($connecDB,“SELECT*FROM clients WHERE id\u client=”)。mysqli\u real\u escape\u string($connecDB,$id\u client)。“'ORDER BY id DESC LIMIT 1”);
    while($rowservice=mysqli\u fetch\u数组($resultservices)){
    if($rowservice['php'])){
    echo“
  • php
  • ” } if($rowservice['java'])){ echo“
  • java
  • ” } if($rowservice['ruby'])){ 回声“
  • ruby
  • ” } if($rowservice['node'])){ 回声“
  • 节点
  • ” } }
    虽然我不确定您想做什么,但是:

    $resultservices = mysqli_query($connecDB,"SELECT * FROM clients WHERE id_client = $id_client");
    
    while($rowservice = mysqli_fetch_array($resultservices)){
        $service[1] = (int)$rowservice['1'];
        $service[2] = (int)$rowservice['1'];
        $service[3] = (int)$rowservice['0'];
        $service[4] = (int)$rowservice['1'];
    }
    
    foreach ($service as $k=>$v) {
        if ($v) {
            echo "<li>service".$k."</li>";
        }
    }
    
    $resultservices=mysqli\u query($connecDB,“SELECT*FROM clients,其中id\u client=$id\u client”);
    while($rowservice=mysqli\u fetch\u数组($resultservices)){
    $service[1]=(int)$rowservice['1'];
    $service[2]=(int)$rowservice['1'];
    $service[3]=(int)$rowservice['0'];
    $service[4]=(int)$rowservice['1'];
    }
    foreach($k=>v的服务){
    如果有的话(五美元){
    echo“
  • 服务”$k.“
  • ”; } }
    [编辑]我看到我们有了一些新的变量

    while($rowservice = mysqli_fetch_array($resultservices)){
        $service['php'] = (int)$rowservice['php'];
        $service['java'] = (int)$rowservice['java'];
        $service['ruby'] = (int)$rowservice['ruby'];
        $service['node'] = (int)$rowservice['node'];
    }
    
    foreach ($service as $k=>$v) {
        if ($v) {
            echo "<li>".$k."</li>";
        }
    }
    
    while($rowservice=mysqli\u fetch\u数组($resultservices)){
    $service['php']=(int)$rowservice['php'];
    $service['java']=(int)$rowservice['java'];
    $service['ruby']=(int)$rowservice['ruby'];
    $service['node']=(int)$rowservice['node'];
    }
    foreach($k=>v的服务){
    如果有的话(五美元){
    回声“
  • ”$k.“
  • ”; } }
    虽然实际上,您所做的只是输出MySQL的最后一行,所以您也可以这样做

        $resultservices = mysqli_query($connecDB,"SELECT * FROM clients WHERE id_client = '".mysqli_real_escape_string($connecDB, $id_client)."' ORDER BY id DESC LIMIT 1");
    
        while($rowservice = mysqli_fetch_array($resultservices)){
            if ($rowservice['php']) {
                echo "<li>php</li>"
            }
            if ($rowservice['java']) {
                echo "<li>java</li>"
            }
            if ($rowservice['ruby']) {
                echo "<li>ruby</li>"
            }
            if ($rowservice['node']) {
                echo "<li>node</li>"
            }
        }
    
    $resultservices=mysqli\u query($connecDB,“SELECT*FROM clients WHERE id\u client=”)。mysqli\u real\u escape\u string($connecDB,$id\u client)。“'ORDER BY id DESC LIMIT 1”);
    while($rowservice=mysqli\u fetch\u数组($resultservices)){
    if($rowservice['php'])){
    echo“
  • php
  • ” } if($rowservice['java'])){ echo“
  • java
  • ” } if($rowservice['ruby'])){ 回声“
  • ruby
  • ” } if($rowservice['node'])){ 回声“
  • 节点
  • ” } }
    考虑到四个服务值中的三个将具有相同的值,您可以消除其中两个开关,最终得到相同的结果:

    $service01 = (int)$rowservice['1'];
    $service02 = (int)$rowservice['1']; // identical to service01
    $service03 = (int)$rowservice['0'];
    $service04 = (int)$rowservice['1']; // identical to service01
    
    意思是你可以:

    switch($service01) {
        case 0: break;
        case 1: echo "<li>service01, 02, and 04</li>"; break;
    }
    

    考虑到四个服务值中有三个具有相同的值,您可以消除其中两个开关,并最终得到相同的结果:

    $service01 = (int)$rowservice['1'];
    $service02 = (int)$rowservice['1']; // identical to service01
    $service03 = (int)$rowservice['0'];
    $service04 = (int)$rowservice['1']; // identical to service01
    
    意思是你可以:

    switch($service01) {
        case 0: break;
        case 1: echo "<li>service01, 02, and 04</li>"; break;
    }
    

    放入案例0:中断在switch语句末尾无效?如果将服务变量放入数组中,可以在foreach循环中执行单个开关(甚至使用三元运算符),service01、service02、service04 sine all=(int)$rowservice['1'之间有什么区别;我做了​​代码中的更正,sorrywill将
    置于案例0:中断在switch语句末尾无效?如果将服务变量放入数组中,可以在foreach循环中执行单个开关(甚至使用三元运算符),service01、service02、service04 sine all=(int)$rowservice['1'之间有什么区别;我做了​​代码中的更正,抱歉,谢谢!,但是我怎样才能在每一个li上放上不同的文字呢?在我的示例中,我有一个带有名称的列表,并且应该根据值显示感谢!,但是我怎样才能在每一个li上放上不同的文字呢?在我的示例中,我有一个带有名称的列表,应该根据值显示