[英]PHP if statement comparison always returning true
我的if語句始終返回true,因此我無法追究這個問題。
$ currentMessageCount的值為42,lastMessageCount為41。
$result = $mysqli->query("SELECT message_count, last_seen
FROM message_counter
WHERE match_id = '$i'");
$row = $result->fetch_assoc();
$currentMessageCount = (int)$row["message_count"];
$lastMessageCount = (int)$row["last_seen"];
$result->free();
if ($currentMessageCount > $lastMessageCount) {
this code is running
} elseif ($currentMessageCount === $lastMessageCount) {
this code is also running!!
}
編輯:
這是實際的代碼示例,按建議添加:
//loop through and check new messages for all matches
for($i = 1; $i <= $numMatches; $i++) {
$result = $mysqli->query("SELECT message_count, last_seen FROM message_counter WHERE match_id = '$i'");
$row = $result->fetch_assoc();
$currentMessageCount = (int)$row["message_count"];
$lastMessageCount = (int)$row["last_seen"];
//free memory
$result->free();
//if new messages - get them, else - skip
if ($currentMessageCount > $lastMessageCount) {
$newMessages = true;
//get NEW messages for that match
$result = $mysqli->query(" SELECT all_messages.* FROM all_messages
WHERE match_id = '$i'
AND message_number > '$lastMessageCount'");
//loop through all messages in table
$j = 0;
$allMessages = [];
while ($row = $result->fetch_assoc()) {
$dateTime = $row["date_time"];
$messageNumber = $row["message_number"];
$messageBody = $row["message_body"];
$matchID = $i;
$senderID = $row["sender_id"];
//message array for each message
$messageData = ["dateTime" => $dateTime,
"messageNumber" => $messageNumber,
"currentMessageCount" => $currentMessageCount,
"lastMessageCount" => $lastMessageCount,
"messageBody" => $messageBody,
"matchID" => $matchID,
"senderID" => $senderID];
//put in another array for response
$allMessages[$j] = $messageData;
$j++;
}
//free memory
$result->free();
//put each message set into array for each user
$allMatchMessages[$i-1] = $allMessages;
} elseif ($currentMessageCount === $lastMessageCount) {
$newMessages = false;
}
}
該代碼將同時返回充滿數據的$ messageData數組和newMessages = false
$newMessages
會在外部for
循環的每次迭代中覆蓋,並最終以最后一次迭代中分配的值結束。
該代碼將同時返回充滿數據的
$messageData
數組和$newMessages = false
對此的明顯解釋是$messageData
由for循環的早期迭代填充,並且所有后續迭代(或至少最后一次迭代)都將$newMessages
設置為false。
看起來您可能只需要消除elseif
塊,並在for
循環之前將$newMessages
設置$newMessages
false
。 實際上,甚至不需要$newMessages
,因為您可以在for循環結束后將$allMessages
評估為布爾值。 (如果為空,它將計算為false,反之亦然。)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.