не столько проблема, сколько поиск лучших практик и наиболее эффективное решение проблемы.
У меня есть код, который читает все строки userID в таблице sql и может их распечататьхорошо.Каждая строка содержит {Sales No. - D_No - Category1 - Category2 - Date}.
Теперь для каждой строки у меня может быть огромное количество операторов 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?).Однако, если бы я мог заставить программу создавать переменную с именем $ Имя категории каждый раз, когда она видит новую категорию, а затем добавлять 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>";
}