Если у меня есть функция, которая печатает столько раз, сколько зацикливается, как я могу настроить проверку, которая будет печататься только один раз, если все спортивные результаты вместе = 0?

У меня есть оператор if в функции под названием calc, который указывает if общее $allTotalPicks !== "0, а затем выводит <table></table>. Моя инструкция else if - это проблема, и она проверяет, является ли $allTotalPicks == 0 то echo утверждением, говорящим "there is no data...". Проблема в том, что он печатает оператор столько раз, сколько зацикливает функцию при ее вызове. Функция проверяет 7 видов спорта, и в настоящее время для каждого вида спорта, в котором используется $allTotalPicks == 0, выводится инструкция "there is no data...".

Как я могу заставить его печатать только один раз и ТОЛЬКО , если $allTotalPicks == 0 для ВСЕХ видов спорта $sports $i вместе? Если $allTotalPicks == 0 есть только в одном или двух видах спорта, то выражение echo, в котором говорится "there is no data...", должно НЕ печататься. Все виды спорта должны быть равны нулю, чтобы вывести else if echo "there is no data...". Это возможно? Заранее спасибо.

Вы можете просмотреть текущую итоговую таблицу результатов в действии здесь: https://wsplays.com/results/ на правую боковую панель. Этот код предназначен для таблицы "по видам спорта". Спасибо!

<?php
include_once("../../../wp-load.php");
global $wpdb;

$action = $_POST['action'];
$val = $_POST['val'];

if ($action=="persport") {

    if ($val=="playoftheday30") {
        $interval = " game_date  BETWEEN (CURDATE() - INTERVAL 30 DAY) AND CURDATE() AND playoftheday = 'YES'";
    }

    if ($val=="playoftheday90") {
        $interval = " game_date  BETWEEN (CURDATE() - INTERVAL 90 DAY) AND CURDATE() AND playoftheday = 'YES'";
    }

    if ($val=="playoftheday365") {
        $interval = " game_date  BETWEEN (CURDATE() - INTERVAL 365 DAY) AND CURDATE() AND playoftheday = 'YES'";
    }    

    if ($val=="latebreakingplay30") {
        $interval = " game_date  BETWEEN (CURDATE() - INTERVAL 30 DAY) AND CURDATE() AND latebreakingplay = 'YES'";
    }

    if ($val=="latebreakingplay90") { 
        $interval = " game_date  BETWEEN (CURDATE() - INTERVAL 90 DAY) AND CURDATE() AND latebreakingplay = 'YES'";  
    }

    if ($val=="latebreakingplay365") { 
        $interval = " game_date  BETWEEN (CURDATE() - INTERVAL 365 DAY) AND CURDATE() AND latebreakingplay = 'YES'"; 
    }

    if ($val=="vipyesterday") {
        $interval = " game_date = DATE_SUB(CURDATE(),INTERVAL 1 DAY) AND vipplays = 'YES'";
    }

    if ($val=="vipplays7") {  
        $interval = " game_date  BETWEEN (CURDATE() - INTERVAL 7 DAY) AND CURDATE() AND vipplays = 'YES'";  
    }

    if ($val=="vipplays30") {  
        $interval = " game_date  BETWEEN (CURDATE() - INTERVAL 30 DAY) AND CURDATE() AND vipplays = 'YES'"; 
    }

    if ($val=="vipplays90") {  
        $interval = " game_date  BETWEEN (CURDATE() - INTERVAL 90 DAY) AND CURDATE() AND vipplays = 'YES'";
    }

    if ($val=="vipplays180") {
        $interval = " game_date  BETWEEN (CURDATE() - INTERVAL 180 DAY) AND CURDATE() AND vipplays = 'YES'";  
    }

    if ($val=="vipplays365") {
        $interval = " game_date  BETWEEN (CURDATE() - INTERVAL 365 DAY) AND CURDATE() AND vipplays = 'YES'";
    } 

    if ($val=="yesterday") {
        $interval = " game_date = DATE_SUB(CURDATE(),INTERVAL 1 DAY) AND vipplays = 'NO'";
    }

    if ($val=="past7days") {
        $interval = " game_date  BETWEEN (CURDATE() - INTERVAL 7 DAY) AND CURDATE() AND vipplays = 'NO'";
    }

    if ($val=="thisweek") {
        $interval = "YEAR(game_date) = YEAR(CURDATE()) AND  WEEKOFYEAR(game_date)=WEEKOFYEAR(CURDATE())";
    }

    if ($val=="thismonth") {
        $interval = " YEAR(game_date) = YEAR(CURDATE()) AND MONTH(game_date) = MONTH(CURDATE())";
    }

    if ($val=="past30days") {
        $interval = " game_date  BETWEEN (CURDATE() - INTERVAL 30 DAY) AND CURDATE() AND vipplays = 'NO'";
    }

    if ($val=="thisyear") {
        $interval = "  YEAR(game_date) = YEAR(CURDATE())";
    }

    if ($val=="past365days") {
        $interval = " game_date  BETWEEN (CURDATE() - INTERVAL 365 DAY) AND CURDATE() AND vipplays = 'NO'";
    }

    if ($val=="currentseason") {
        $interval = "currentseason";
    }

    function calc($interval,$result_sum,$sum_yourpick,$tot_w,$sport,$sportname) {
        global $wpdb;

        if ($interval=="currentseason") {
            $result = "SELECT * FROM ".$wpdb->prefix."bidsys_sport_seasons WHERE sport=  '".$sport."' AND current_season = 'YES' LIMIT 1";
            $daterange = $wpdb->get_results($result);
            // Display YIP Picks only
            $interval = "game_date BETWEEN '" . $daterange[0]->start_date . "' AND  '" . $daterange[0]->end_date . "' AND vipplays = 'YES'";
        }

        $allRecordWin = 0;
        $allRecordLoss = 0;
        $allRecordPush = 0;
        $allRecordPCT = 0;
        $allRecordUnits = 0;
        $allTotalPicks = 0;
        $allRecordUnitsTemp = 0;

        $result = " SELECT pick_odds,units_play,pick_result FROM ".$wpdb->prefix."bidsys_picklist WHERE  sport = ".$sport." AND  ".$interval."  ORDER BY game_date DESC";
        $newmeta = $wpdb->get_results($result);

        foreach($newmeta as $data){
            $pick_odds = 0;
            $units_play = 0;

            if($data->pick_odds!="") $pick_odds = $data->pick_odds;

            if($data->units_play!="") $units_play = $data->units_play;

            if($data->pick_result=='WIN'){
                if ($pick_odds>=100) {
                    $allRecordUnitsTemp = ($pick_odds/100) * $units_play;
                    $allRecordUnitsTemp = Abs(Round($allRecordUnitsTemp, 2));
                    $allRecordUnits = $allRecordUnits + $allRecordUnitsTemp;
                } 

                else if ($pick_odds<100 && $pick_odds!=0) {
                            $allRecordUnitsTemp = (100/$pick_odds) * $units_play;
                            $allRecordUnitsTemp = Abs(Round($allRecordUnitsTemp, 2));
                            $allRecordUnits = $allRecordUnits + $allRecordUnitsTemp;
                }

                else {
                            $allRecordUnitsTemp = (100/$pick_odds) * $units_play;
                            $allRecordUnitsTemp = Abs(Round($allRecordUnitsTemp, 2));
                            $allRecordUnits = $allRecordUnits + $allRecordUnitsTemp;
                }

                $allRecordWin = $allRecordWin + 1;
                $allTotalPicks = $allTotalPicks + 1;

            } // END WIN 

            else if ($data->pick_result=='LOSS') {
                    $allRecordUnits = $allRecordUnits - $units_play;
                    $allRecordUnits = Round($allRecordUnits, 2);
                    $allRecordLoss = $allRecordLoss + 1;
                    $allTotalPicks = $allTotalPicks + 1;
            } 

            else if ($data->pick_result=='PUSH') {
                    $allRecordPush = $allRecordPush + 1;
            }
        } // END foreach

        if ($allTotalPicks>0) {

            $allRecordPCT = ($allRecordWin / $allTotalPicks) * 100;
            $allRecordPCT = Round($allRecordPCT, 0);
        }

        if ($allRecordUnits>0) {
            $all = "+".$allRecordUnits;
        }

        else {
            $all = $allRecordUnits;
        }

        /** *********************************************************/
        /** *********************************************************/

        if ($allTotalPicks !== 0) {    
            echo"
                <table class='sidebar_result b'>
                        <tr class='hdr_2'>
                            <td colspan='5' >$sportname</td>
                        </tr>
                            <tr class='hdr_2'>
                            <td>W</td>
                            <td>L</td>
                            <td>P</td>
                            <td>PCT</td>
                            <td>UNITS</td>
                        </tr>
                            <tr class='hdr_3'>
                            <td>$allRecordWin</td>
                            <td>$allRecordLoss</td>
                            <td>$allRecordPush</td>
                            <td>".$allRecordPCT."%</td>
                            <td>$all</td>
                        </tr>
                </table>";
        }

Вот где начинается проблема:

        else if ($allTotalPicks == 0) { 
            echo "<p style='font-size: 14px; color: #F8F8F8; padding: 10px; text-align: left;'>There is no data for the current selection.<br>Please choose another option.</p>";
        }

        /** *********************************************************/
        /** *********************************************************/
    } // END function

    $sportname = "";
    $bidsys_options = get_option('bidsys_options');
        for ( $i=1; $i<8; $i++ ) {
            if ( $bidsys_options-> sportsstatus[$i] != "Disabled" ) {
                $sportname =  $bidsys_options->sportsname[$i];
                $sport = $i;   

         calc($interval,$result_sum,$sum_yourpick,$tot_w,$sport,$sportname);

            } 
        }
} // END else persport
?>
0
Daenerys 9 Янв 2018 в 01:18

2 ответа

Лучший ответ

Вы могли бы сделать что-то подобное.

        else if ($allTotalPicks == 0) { 

        }

        return $allTotalPicks;

        /** *********************************************************/
        /** *********************************************************/
    } // END function

Тогда у вас может быть что-то вроде ...

    for ( $i=1; $i<8; $i++ ) {
        if ( $bidsys_options-> sportsstatus[$i] != "Disabled" ) {
            $sportname =  $bidsys_options->sportsname[$i];
            $sport = $i;   

         $total_picks_all_sports += calc($interval,$result_sum,$sum_yourpick,$tot_w,$sport,$sportname);
        } 
    }

    if ( 0 == $total_picks_all_sports ) {
        echo "<p style='font-size: 14px; color: #F8F8F8; padding: 10px; text-align: left;'>There is no data for the current selection.<br>Please choose another option.</p>";
    } else {
        /* Total picks is not zero, do something else. */
    }

Переменная $total_picks_all_sports - это общее количество выборов для всех видов спорта, и только если оно равно нулю, вы пишете сообщение на странице.

0
sdexp 9 Янв 2018 в 15:21

Используйте ключевое слово PHP break, описанное здесь: https: // secure.php.net/manual/en/control-structures.break.php

break завершает выполнение текущей структуры for, foreach, while, do-while или switch.

break принимает необязательный числовой аргумент, который сообщает ему, из скольких вложенных включающих структур следует выделить. Значение по умолчанию - 1, вырывается только непосредственная окружающая структура.

$arr = array('one', 'two', 'three', 'four', 'stop', 'five');
while (list(, $val) = each($arr)) {
    if ($val == 'stop') {
        break;    /* You could also write 'break 1;' here. */
    }
    echo "$val<br />\n";
}
0
Noah 8 Янв 2018 в 22:23