如何简化PHP中的多重切换?
有可能简化这段代码吗?我试图把所有的情况下,在一个开关,但总是会打破在第一个案件,我需要在html的所有回声的。什么是可能的?谢谢大家!如何简化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
$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上放上不同的文字呢?在我的示例中,我有一个带有名称的列表,应该根据值显示