[英]condition not satisfied still the php is running
您好,我有一个数组,我使用for loop
和内部for循环遍历它,有一些switch cases
即使不满足开关条件,我也不知道为什么我的代码在运行
这是我的代码:
for($j=0;$j<count($fees_type_arr);$j++){
$month = "N/A";
switch ($fees_type_arr[$j]) {
case 'adm':
$sql_record_data = array(
'tid' => $tid.$j+1,
'slip_no' => $slip_no,
'date_time' => $current_date_time,
'uid' => $uid,
'month' => $month,
'amount' => $admission_fees,
'fees_type' => 'adm'
);
if($wpdb->insert($record_table, $sql_record_data)){
$ok = 1;
}
else{
$ok = 0;
throw new Exception($wpdb->print_error());
}
break;
case "trn":
$sql_record_data = array(
'tid' => $tid.$j+1,
'slip_no' => $slip_no,
'date_time' => $current_date_time,
'uid' => $uid,
'month' => $month,
'amount' => $transport_chg,
'fees_type' => 'trn'
);
if($wpdb->insert($record_table, $sql_record_data)){
$ok = 1;
}
else{
$ok = 0;
throw new Exception($wpdb->print_error());
}
break;
case "ann":
$sql_record_data = array(
'tid' => $tid.$j+1,
'slip_no' => $slip_no,
'date_time' => $current_date_time,
'uid' => $uid,
'month' => $month,
'amount' => $annual_chg,
'fees_type' => 'ann'
);
if($wpdb->insert($record_table, $sql_record_data)){
$ok = 1;
}
else{
$ok = 0;
throw new Exception($wpdb->print_error());
}
break;
case "rec":
$sql_record_data = array(
'tid' => $tid.$j+1,
'slip_no' => $slip_no,
'date_time' => $current_date_time,
'uid' => $uid,
'month' => $month,
'amount' => $recreation_chg,
'fees_type' => 'rec'
);
if($wpdb->insert($record_table, $sql_record_data)){
$ok = 1;
}
else{
$ok = 0;
throw new Exception($wpdb->print_error());
}
break;
}
}
这是我的数组
$fees_type_arr = array("adm","ttn","trn","ann","rec");
tid是主键,我收到一个错误的主键条目,这是由于第case
的代码所致,即case "adm"
正在运行多次
您的变量$ tid似乎是一个字符串。 因此,即使$ j是一个增量整数,$ tid。$ j + 1也会得出1。
您可以将其更改为$ tid。($ j + 1)(添加括号)。
范例:
<?php
$tid = 'test';
$j = 10;
echo $tid.$j+1;
// returns 1
?>
更改后:
<?php
$tid = 'test';
$j = 10;
echo $tid.($j+1);
// returns 'test11'
?>
请放心,您提交的示例中似乎有很多重复的代码,您可以将其移至函数或更具动态性的循环中,以避免代码重复。
当您在代码中执行$ j + 1时,它将覆盖$ j的值,并将其再次设置为1。因此,每次循环将调用第一种情况“ adm”。 您需要存储$ j的实际值,并在最后分配它。 使用此代码。
for($j=0;$j<count($fees_type_arr);$j++){
$month = "N/A";
$oldj = $j;
switch ($fees_type_arr[$j]) {
case 'adm':
$sql_record_data = array(
'tid' => $tid.$j+1,
'slip_no' => $slip_no,
'date_time' => $current_date_time,
'uid' => $uid,
'month' => $month,
'amount' => $admission_fees,
'fees_type' => 'adm'
);
if($wpdb->insert($record_table, $sql_record_data)){
$ok = 1;
}
else{
$ok = 0;
throw new Exception($wpdb->print_error());
}
break;
case "trn":
$sql_record_data = array(
'tid' => $tid.$j+1,
'slip_no' => $slip_no,
'date_time' => $current_date_time,
'uid' => $uid,
'month' => $month,
'amount' => $transport_chg,
'fees_type' => 'trn'
);
if($wpdb->insert($record_table, $sql_record_data)){
$ok = 1;
}
else{
$ok = 0;
throw new Exception($wpdb->print_error());
}
break;
case "ann":
$sql_record_data = array(
'tid' => $tid.$j+1,
'slip_no' => $slip_no,
'date_time' => $current_date_time,
'uid' => $uid,
'month' => $month,
'amount' => $annual_chg,
'fees_type' => 'ann'
);
if($wpdb->insert($record_table, $sql_record_data)){
$ok = 1;
}
else{
$ok = 0;
throw new Exception($wpdb->print_error());
}
break;
case "rec":
$sql_record_data = array(
'tid' => $tid.$j+1,
'slip_no' => $slip_no,
'date_time' => $current_date_time,
'uid' => $uid,
'month' => $month,
'amount' => $recreation_chg,
'fees_type' => 'rec'
);
if($wpdb->insert($record_table, $sql_record_data)){
$ok = 1;
}
else{
$ok = 0;
throw new Exception($wpdb->print_error());
}
break;
}
$j = $oldj;
}
它将实际值重新分配给$ j并将完美工作!!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.