不是什么大问题,而是更多地寻求最佳实践和最有效的解决方案。
我有一些代码可以读取sql表中的userID的所有行,并且可以将它们正确打印。每行包含{销售编号-D_No-类别1-类别2-日期}。
现在,对于每一行,我可以拥有大量的if语句等,以查看类别是否等于某个字段,然后将1加到一个这样的变量中。但是我想要更有效的方法。在其中创建自己名称的变量或将其添加到现有名称的变量中。
这是现有代码的摘要:
while ($row = mysqli_fetch_assoc($result)) {
echo "<tr>";
foreach ($row as $field => $value) {
foreach ($salesItemsArray as $saleItem){
if (strpos($value, '******CategoryNAME******') !== false){
}
}
echo "<td>" . $value . "</td>"; // I just did not use "htmlspecialchars()" function.
}
echo "</tr>";
}
echo "</table>";
因此,如果我将***** CategoryNAME *****替换为实际类别,并对每个类别重复此操作,或者使用等价的切换命令(如果使用php,则此代码从本质上(可能需要进行一些编辑)起作用有一个?)。但是,如果我可以让程序在每次看到新类别时创建一个名为$ category Name 的变量,然后每隔一次将其添加1,它将适用于任何类别名称,并且会更多高效且简单。
这有可能吗,还有什么想法可以实现吗?
如果需要,可将部分重新表述。
updated attempt at code :
foreach ($row as $field => $value) { // I you want you can right this line like this: foreach($row as $value) {
foreach ($salesItemsArray as $saleItem){
if (strpos($value, $saleItem) !== false){
$foo[$saleItem] = $foo[$saleItem] + 1;
}
foreach ($foo as $saleTotal){
echo $saleTotal."<br/>".$foo[$saleTotal];
}
}
echo "<td>" . $value . "</td>";
希望最终代码可以编辑帖子
感谢我对此的评论。但是有一点问题,那就是每个$ foo [$ saleItem]组合在回显时都会有1个。从数据库的角度来看,应该只有1项和1项,数组中的所有其他项及其变量0 ...
while ($row = mysqli_fetch_assoc($individualResult)) {
echo "<tr>";
foreach ($row as $field => $value){
foreach ($salesItemsArray as $saleItem){
if (strpos($value, $saleItem) !== false){
if(isset($foo[$saleItem])) { $foo[$saleItem] += 1; } else { $foo[$saleItem] = 1;}
echo $saleItem;
}
foreach ($salesItemsArray as $saleTotal){
echo $foo[$saleTotal];
if ($foo[$saleTotal] > 0){
echo $saleItem."+".$foo[$saleTotal];
}
}
}
echo "<td>" . $value . "</td>";
echo "</tr>";
}