【发布时间】:2019-07-17 07:10:11
【问题描述】:
我是 codeigniter 的新手,我的问题是当我在彼此内部使用两个 foreach 循环时如何解决重复数据。当我使用循环时,它是重复数据,当在循环外使用循环值时,它只打印最后一个值如何解决。
if ($invoiceResult->to_type == 'customer')
{
$prodIds = isset($invoiceResult->pIds) && !empty($invoiceResult->pIds) ? rtrim($invoiceResult->pIds, ',') : '0';
$stockIds = 0;
if(isset($invoiceResult->sid) && $invoiceResult->sid != ' ')
{
$stockIds = rtrim($invoiceResult->sid, ',');
}
$printproduct = "SELECT p.pId,s.pId AS st_id, s.barcode, p.pPrice, p.pModel,p.HSNSAC,p.CGST,p.SGST,c.cName from products p LEFT JOIN stock s ON p.pId = s.pId INNER JOIN category c ON p.cId = c.cId where s.sId IN (" . $stockIds . ") OR p.pId IN (" . $prodIds . ")";
$query = $this->Main_model->__callMasterquery($printproduct);
$printproresult = $query->result();
$inVocRow = $query->row();
$qtyResult = explode(",", $invoiceResult->pQtys);
}
foreach ($printproresult as $key => $inVocRow )
{
$barcode = isset($inVocRow->barcode) ? $inVocRow->barcode : "N/A";
$cgstRate = $inVocRow->CGST;
$sgstRate = $inVocRow->SGST;
$qty = ($inVocRow->barcode) ? 1 : $qtyResult[$key] ;
print_r($qty);
$prodPrice = ($inVocRow->barcode) ? $inVocRow->pPrice : $inVocRow->pPrice * $qty;
$cgst = ((float)$prodPrice * $cgstRate) / 100;
$sgst = ($prodPrice * $sgstRate) / 100;
$cgstTotals += $cgst;
$sgstTotals += $sgst;
$gstRates += ($cgst + $sgst);
$output .= '<tr>
<td style="border-bottom:1px solid rgba(0, 0, 0, 0.125);text-align:center;">' . $i++ . '</td>
<td style="border-bottom:1px solid rgba(0, 0, 0,0.125);text-align:center;">' . $inVocRow->cName . ': ' . $inVocRow->pModel . '</td>
<td style="border-bottom:1px solid rgba(0, 0, 0, 0.125);text-align:center;">' . $barcode . '</td>
<td style="border-bottom:1px solid rgba(0, 0, 0,0.125);text-align:center;">' . $inVocRow->HSNSAC . '</td>
<td style="border-bottom:1px solid rgba(0, 0, 0,0.125);text-align:center;">' . $Gst = $inVocRow->CGST + $inVocRow->SGST . '%</td>
<td style="border-bottom:1px solid rgba(0, 0, 0, 0.125);text-align:center;">' . $inVocRow->pPrice . '</td>
<td style="border-bottom:1px solid rgba(0, 0, 0, 0.125);text-align:center;"">' . $prodPrice . '</td>
<td style="border-bottom:1px solid rgba(0, 0, 0, 0.125);text-align:center;"></td>
</tr>';
$TotalAmount += $prodPrice;
}exit();
实际上这里有两种产品,一种是条形码产品,另一种是非条形码产品。条码产品不包含数量,非条码产品包含数量。当我购买这两种类型的产品然后显示
未定义的偏移量:2 和未定义的偏移量:3
因为条形码产品不包含数量。我找到了一个解决方案,计算条形码产品然后使用 for 循环并使用数量 = 1 并将其添加到数量数组中并乘以产品价格,但是当我在 foreach 循环中使用它时它会重复该值。如果我在 foreach 循环之前使用它,那么它只打印最后一个值,或者如果我在 foreach 循环中使用它,那么它是重复的,每个数量乘以每个产品价格。我如何解决它。如果有任何其他类型来解决数量数组,请建议我。
【问题讨论】:
标签: php codeigniter foreach