簡體   English   中英

如果用和聲明將不起作用?

[英]If statement with and won't work?

一個非常愚蠢的問題,我是C#小子,我也在php中編程4年,但是有時當我在其中使用'and'或'&&'時如果聲明不起作用。

例如當前的問題是這樣的:

    while($row = $res->fetch()){
        if(($row['Season'] != "2015/2016") && ($row['Source'] != "xmlsoccer")){ 
        $i3++; if($i3==1)hisHeader();
        $eventy = $row['HomeTeam'] . '-v-' . $row['AwayTeam'];
        $stagey = $row['League'];

        $datetime = new DateTime($row['Date']);
        $la_time = new DateTimeZone($zone);
        $datetime->setTimezone($la_time);
        $date = $datetime->format('Y-m-d');
        $time = $datetime->format('H:i');

        $url = toAscii($eventy) . "/" . toAscii($stagey) . "/"  . code36($row['HisID']);
        echo "<tr class='brown' style='height:20px;'>" , "<td style='width:120px; border:1px solid #444;'>" , "<matches-list>" , $date , "</matches-list>" , "</td>" , "<td style='width:60px; border:1px solid #444;'>" , "<matches-list>" , $time , "</matches-list>" , "</td>" , "<td class='nav' style='border:1px solid #444;'>" , "<matches-list>" , "<a href='".$url."' title='$matchtitle'>" ,$row['EventName'] ," (<span style='color:#555'>{$row['League']}</span>)", "</matches-list>","</td>";
        if($row['Status'] != 0){    
          echo "<td style='width:60px; border:1px solid #444;'>", "<matches-list>" , 
          $row['HalfTimeHomeGoals'] . ' : ' . $row['HalfTimeAwayGoals'], "</matches-list>", "</td>", 
          "<td style='width:60px; border:1px solid #444; color: #007AFF'>","<matches-list>" , 
          $row['HomeGoals'] . ' : ' . $row['AwayGoals'], "</matches-list>","</td></tr>";
      }
      else{
        echo "<td style='width:60px; border:1px solid #444; color: #777777' colspan='2' style='text-align:center !important;'>",
        "<matches-list>", "NO RESULTS YET" ,"</matches-list>","</td>";
      }
    }
    }
    echo "</tbody></table>";
}

為什么

if(($row['Season'] != "2015/2016") && ($row['Source'] != "xmlsoccer")){ 

不行嗎 我在數據庫中有數百萬行,並且我不想要2015/2016的xmlsoccer數據,但是當我運行它時,它什么也不返回。

當我只刪除此&& ($row['Source'] != "xmlsoccer")一切正常。

我100%確信一切都正確,例如當我轉儲時

var_dump($row['Season'] . " " . $row['Source']); 

它返回例如'2013/2014''xmlsoccer',但if語句中沒有內容...

請牢記Chasles關系。 為了說明,讓我們做一些數學運算:

if(a && b)可以關聯到:

如果ab為true,則結果為true

但是,如果您需要將其反轉,您會想到:

if(not a and not b)將被表示如下:

如果( ab不正確,那么c為正確)

但是我們可以用Chasles定理翻譯這最后一句話:

A + B = C

(A + B)\\ = C

因此,與Chasles關系,結果是

A\\ . B\\ = C A\\ . B\\ = C (點表示OR

對應於A || B = C

因此,我們可以說(A + B)\\ = C等效於A\\ + B\\ = C ,這意味着在編程中:

! (a && b) ! (a && b)為true等於!a || !b !a || !b也是如此

最后,您可以編寫這兩個相同的條件:

  1. if( ! ( $row['Season'] == "2015/2016") && $row['Source'] == "xmlsoccer" ) )
  2. if( $row['Season'] != "2015/2016") || $row['Source'] != "xmlsoccer" )

首先在SQL層上進行過濾,然后只返回您需要的內容。 其次,您明確要求所有不是xmlsoccer的內容

($row['Source'] != "xmlsoccer")

但是,當您轉儲看到“ 2013/2014”和“ xmlsoccer”的值並且不進入if語句時,您會感到困惑。 根據我對您提出的問題的了解,您希望每個季節都提供除“ 2015/2016”外所有屬於“ xmlsoccer”的內容

我認為您正在尋找這個if語句:

if(($row['Season'] != "2015/2016") && ($row['Source'] == "xmlsoccer")){ 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM