Итого по PHP на основе записей в SQL - наилучшая практика - PullRequest
0 голосов
/ 07 мая 2019

не столько проблема, сколько поиск лучших практик и наиболее эффективное решение проблемы.

У меня есть код, который читает все строки 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>";
        }

...