我有一个从mysql数据库查询的表单。这个特定的输出79行。当我提交然后尝试使用foreach()拆分成一个数组时,它将最大显示77行。无论我激活哪个部分,甚至添加新的部分。
$counterVar=0;
foreach($_POST['count'] as $row=>$value) {
if(number_format(($_POST['partsprice'][$row] * $_POST['new_qty'][$row]), 2, '.', '') > '0.00'){
//$row_data[] = "(DEFAULT, '".$count[$row]."', '".$rma[$row]."', '".$ln[$row]."', '0', '".$item_key[$row]."', '".$qty[$row]."', '".$part_n[$row]."', '".$desc[$row]."', '".number_format($part_price1[$row], 2, '.', '')."', '".number_format($roll_out1[$row], 2, '.', '')."', '".number_format(($part_price1[$row] * $qty[$row]), 2, '.', '')."', '".number_format(($roll_out1[$row] * $qty[$row]), 2, '.', '')."', '".$cost_type[$row]."', '".$stkrm[$row]."', '".$bin[$row]."','5')<BR>";
$row_data[] = "(DEFAULT, '".$_POST['count'][$row]."', '".$_POST['rma'][$row]."', '".$_POST['linenum'][$row]."', '0', '".$_POST['item_key'][$row]."', '".$_POST['new_qty'][$row]."', '".$_POST['part_num'][$row]."', '".$_POST['part_desc'][$row]."', '".number_format($_POST['partsprice'][$row], 2, '.', '')."', '".number_format($_POST['rolloutprice'][$row], 2, '.', '')."', '".number_format(($_POST['partsprice'][$row] * $_POST['new_qty'][$row]), 2, '.', '')."', '".number_format(($_POST['rolloutprice'][$row] * $_POST['new_qty'][$row]), 2, '.', '')."', '".$_POST['cost_type'][$row]."', '".$_POST['stkrm'][$row]."', '".$_POST['bin'][$row]."','5')<BR>";
}
$counterVar++;
}
更新代码
$counterVar = 0;
$row_data = [];
$aEach = isset($_POST['count']) ? (array)$_POST['count'] : [];
foreach($aEach as $row => $value) {
$fPartsPrice = isset($_POST['partsprice'][$row]) ? (float)$_POST['partsprice'][$row] : 0;
$fNewQnty = isset($_POST['new_qty'][$row]) ? (float)$_POST['new_qty'][$row] : 0;
if(floatval($fPartsPrice * $fNewQnty) > 0) {
$row_data[] = "(DEFAULT, '".$_POST['count'][$row]."',
'".$_POST['rma'][$row]."', '".$_POST['linenum'][$row]."', '0',
'".$_POST['item_key'][$row]."', '".$_POST['new_qty'][$row]."',
'".$_POST['part_num'][$row]."', '".$_POST['part_desc'][$row]."',
'".number_format($_POST['partsprice'][$row], 2, '.', '')."',
'".number_format($_POST['rolloutprice'][$row], 2, '.', '')."',
'".number_format(($_POST['partsprice'][$row] * $_POST['new_qty'][$row]), 2, '.', '')."',
'".number_format(($_POST['rolloutprice'][$row] * $_POST['new_qty'][$row]), 2, '.', '')."',
'".$_POST['cost_type'][$row]."', '".$_POST['stkrm'][$row]."', '".$_POST['bin'][$row]."','5')<BR>";
}
$counterVar++;
}
$values=implode(",",$row_data);
echo $values;
echo "<br>";
echo 'items: '.count($row_data).'<br />';
echo 'counter: '.$counterVar.'<br />'; `
答案 0 :(得分:0)
不知道$_POST['count']
到底包含什么,但是将带格式的数字与字符串进行比较并不是一个好主意。顺便说一句,您应该检查并验证您的输入变量。
我的修正建议是:
$counterVar = 0;
$row_data = [];
$aEach = isset($_POST['count']) ? (array)$_POST['count'] : [];
foreach($aEach as $row => $value) {
$fPartsPrice = isset($_POST['partsprice'][$row]) ? (float)$_POST['partsprice'][$row] : 0;
$fNewQnty = isset($_POST['new_qty'][$row]) ? (float)$_POST['new_qty'][$row] : 0;
if(floatval($fPartsPrice * $fNewQnty) > 0) {
$row_data[] = /* YOUR STUFF*/;
}
$counterVar++;
}
echo 'items: '.count($row_data).'<br />';
echo 'counter: '.$counterVar.'<br />';
不好意思格式化。似乎所见即所得不喜欢我:-)
=>现在,如果您的$row_data
中缺少一行,则计算$fPartsPrice * $fNewQnty
会给您零或更少的分数。