[英]How to put switch case statement inside a foreach loop in php?
我在foreach循环中有以下条件语句。 我希望检查所有条件语句。 我希望它可以通过使用switch case语句来完成。 谁能给我一个办法呢? 还是有其他方法可以做到这一点? 一些日期具有关于所有四个条件的值。 他们不会检查我是否使用此代码。 由于我是新手,因此我很难弄清楚该怎么做。 如果有人可以提出想法,那将是一个很大的帮助。
foreach ($query->result() as $row) {
if ($row->title == 'GK' && $row->type == 'AM') {
$cal_data[substr($row->date_cal, 8, 2)] = '<div class="gk_am">' . $row->title . ' ' . $row->type . '</div>';
} if ($row->title == 'GK' && $row->type == 'PM') {
$cal_data2[substr($row->date_cal, 8, 2)] = '<div class="gk_pm">' . $row->title . ' ' . $row->type . '</div>';
} if ($row->title == 'RP' && $row->type == 'AM') {
$cal_data3[substr($row->date_cal, 8, 2)] = '<div class="rp_am">' . $row->title . ' ' . $row->type . '</div>';
} if ($row->title == 'RP' && $row->type == 'PM') {
$cal_data4[substr($row->date_cal, 8, 2)] = '<div class="rp_pm">' . $row->title . ' ' . $row->type . '</div>';
}
}
使用else if条件,而不是仅if条件:
foreach ($query->result() as $row) {
if ($row->title == 'GK' && $row->type == 'AM') {
$cal_data[substr($row->date_cal, 8, 2)] = '<div class="gk_am">' . $row->title . ' ' . $row->type . '</div>';
} elseif ($row->title == 'GK' && $row->type == 'PM') {
$cal_data2[substr($row->date_cal, 8, 2)] = '<div class="gk_pm">' . $row->title . ' ' . $row->type . '</div>';
} elseif ($row->title == 'RP' && $row->type == 'AM') {
$cal_data3[substr($row->date_cal, 8, 2)] = '<div class="rp_am">' . $row->title . ' ' . $row->type . '</div>';
} elseif ($row->title == 'RP' && $row->type == 'PM') {
$cal_data4[substr($row->date_cal, 8, 2)] = '<div class="rp_pm">' . $row->title . ' ' . $row->type . '</div>';
}
}
foreach ($query->result() as $row)
{
switch($row->title)
{
case 'GK':
switch($row->type)
{
case 'AM':
$cal_data[substr($row->date_cal, 8, 2)] = '<div class="gk_am">' . $row->title . ' ' . $row->type . '</div>';
break;
case 'PM':
$cal_data2[substr($row->date_cal, 8, 2)] = '<div class="gk_pm">' . $row->title . ' ' . $row->type . '</div>';
break;
}
break;
case 'RP':
switch($row->type)
{
case 'AM':
$cal_data3[substr($row->date_cal, 8, 2)] = '<div class="rp_am">' . $row->title . ' ' . $row->type . '</div>';
break;
case 'PM':
$cal_data4[substr($row->date_cal, 8, 2)] = '<div class="rp_pm">' . $row->title . ' ' . $row->type . '</div>';
break;
}
break;
}
}
上面的代码与给定的条件代码相同。 看看这个。
建议您对conditional
语句使用switch
语句,因为我们知道可能出现的值是什么。
如果您想对switch-case
做同样的事情,那么这是一种方法。
switch($row->title()){
case 'GK':
switch($row->type()){
case 'AM':
......
break;
}
break;
......
}
foreach ($query->result() as $row) {
switch($row->title) {
case 'GK': if($row->type=='AM'){
$cal_data[substr($row->date_cal, 8, 2)] = '<div class="gk_am">' . $row->title . ' ' . $row->type . '</div>';
}else{
$cal_data2[substr($row->date_cal, 8, 2)] = '<div class="gk_pm">' . $row->title . ' ' . $row->type . '</div>';
}
break ;
case 'RP': if($row->type=='AM'){
$cal_data3[substr($row->date_cal, 8, 2)] = '<div class="rp_am">' . $row->title . ' ' . $row->type . '</div>';
}else{
$cal_data4[substr($row->date_cal, 8, 2)] = '<div class="rp_pm">' . $row->title . ' ' . $row->type . '</div>';
}
break ;
}
}
尝试这个
这看起来实际上比需要的复杂得多。
$all_cals = [
'GK' => [
'AM' => &$cal_data,
'PM' => &cal_data2
],
'RP' => [
'AM' => &$cal_data3,
'PM' => &cal_data4
]
];
foreach ($query->result() as $row) {
$row_cal_data = $all_cals[$row->title][$row->type];
if (isset($row_cal_data)) {
$row_cal_data[substr($row->date_cal, 8, 2)] = '<div class="'.tolower($row->title)."_".tolower($row->type).'">' . $row->title . ' ' . $row->type . '</div>';
}
}
根本没有switch语句。
我认为接近您的情况
foreach ($query->result() as $row) {
switch (true) {
case ($row->title == 'GK' && $row->type == 'AM'):
$cal_data[substr($row->date_cal, 8, 2)] = '<div class="gk_am">' . $row->title . ' ' . $row->type . '</div>';
break;
case ($row->title == 'GK' && $row->type == 'PM'):
$cal_data2[substr($row->date_cal, 8, 2)] = '<div class="gk_pm">' . $row->title . ' ' . $row->type . '</div>';
break;
case ($row->title == 'RP' && $row->type == 'AM'):
$cal_data3[substr($row->date_cal, 8, 2)] = '<div class="rp_am">' . $row->title . ' ' . $row->type . '</div>';
break;
case ($row->title == 'RP' && $row->type == 'PM'):
$cal_data4[substr($row->date_cal, 8, 2)] = '<div class="rp_pm">' . $row->title . ' ' . $row->type . '</div>';
break;
}
}
放弃整个switch
等使用array
。 您也可以通过将strtolower()
作为类名来完成所有操作。 您的变量递增值( $cal_data1
, $cal_data2
。)只是数组中的新值,因此$cal_data['date_cal'][0]
, $cal_data['date_cal'][1]
...等等。 它可以使您的代码更易于使用:
<?php
foreach ($query->result() as $row) {
// I am not sure if you wish to capture each instance,
// but you have no if/elseif so I assume you are capturing
// each instance.
$cal_data[substr($row->date_cal, 8, 2)][] = '<div class="'.strtolower($row->title.'_'.$row->type).'">'.$row->title.' '.$row->type.'</div>';
}
?>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.