ยินดีต้อนรับคุณ, บุคคลทั่วไป กรุณา เข้าสู่ระบบ หรือ ลงทะเบียน

เข้าสู่ระบบด้วยชื่อผู้ใช้ รหัสผ่าน และระยะเวลาในเซสชั่น

ThaiSEOBoard.comพัฒนาเว็บไซต์Programming[php] ช่วยผมออกจาก LOOP หน่อยครับ!
หน้า: [1]   ลงล่าง
พิมพ์
ผู้เขียน หัวข้อ: [php] ช่วยผมออกจาก LOOP หน่อยครับ!  (อ่าน 2261 ครั้ง)
0 สมาชิก และ 1 บุคคลทั่วไป กำลังดูหัวข้อนี้
GillBate
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 160
ออฟไลน์ ออฟไลน์

กระทู้: 1,236



ดูรายละเอียด
« เมื่อ: 29 พฤษภาคม 2010, 17:59:24 »

 Tongue ปวดเฮดกับมันจริงๆ ทำมาเกือบครึ่งวันแล้ว มันไม่ออกซักที แต่ละครั้งก็แจ้งเออเร่อไม่ซ้ำบรรทัด Fatal error: Maximum execution time of 30 seconds exceeded ...

นี่โค้ดครับ
โค๊ด:
$i=1; $j = 1; $turn =1; $winner =="";$index = 0;
while($winner != "attacker" or $winner != "defender"){
if($winner != "attacker" or $winner != "defender"){$index = 0;$j=1;}

while($index <= 5){
while($i <= 3){
if($data[$index]['name'] == $member[$i]['name'] and $member[$i]['hp'] > 0){

include('inc/inc.team_atk.php');

}
if($data[$index]['name'] == $e[$i]['name'] and $e[$i]['hp'] > 0){

include('inc/inc.team_def.php');

}
$i++;

//check team winner
if($member[1]['hp'] <= 0 and $member[2]['hp'] <= 0 and $member[3]['hp'] <= 0){
$winner = "defender";
echo "<b style='color:green'>MONSTER TEAM WIN!</b>";
}
if($e[1]['hp'] <= 0 and $e[2]['hp'] <= 0 and $e[3]['hp'] <= 0){
$winner = "attacker";
echo "<b style='color:green'>{$getUser_result['team_id']} TEAM WIN!</b>";
}

}
$index++;
}//END while($i < 4) for index 0


}//END BATTLE
บันทึกการเข้า
DownsTream
บุคคลทั่วไป
« ตอบ #1 เมื่อ: 29 พฤษภาคม 2010, 18:21:01 »

อ้างถึง
$i=1; $j = 1; $turn =1; $winner ==""; $index = 0;

ตรงนี้ผิดแน่ๆ ครับ == เป็นการเปรียบเทียบ แสดงว่าตอนนี้ไม่ได้ กำหนดค่าให้ $winner

while($winner != "attacker" or $winner != "defender")  ตัวนี้น่าจะต้องการให้ loop ไปเรื่อยๆ ใช้ while(1) แทนก็ได้

น่าจะประมาณนี้มากว่าครับ

โค๊ด:
<?php

$i 
0;
while(
1) {
if($i == 5) {
break;
}
echo $i'<br />';
$i++;
}

?>

ไม่รู้ว่างงหรือเปล่า ลอง copy โค้ดผมไปศึกษาดูนะครับ concept ประมาณนี้แหละ

โค้ดที่คุณเขียนมันเป็น loop ไม่รู้จบนะครับ

php จะกำหนดเวลาไว้ให้รัน ได้แค่ 30 วินาที ถ้าเกิดนั้นจะแจ้ง error อย่างที่เห็นแหละครับ

บันทึกการเข้า
mikey99
Newbie
*

พลังน้ำใจ: 2
ออฟไลน์ ออฟไลน์

กระทู้: 60



ดูรายละเอียด
« ตอบ #2 เมื่อ: 29 พฤษภาคม 2010, 18:31:24 »

break;  กับ exit();  ต่างกันไงหรอครับ
บันทึกการเข้า
DownsTream
บุคคลทั่วไป
« ตอบ #3 เมื่อ: 29 พฤษภาคม 2010, 18:42:51 »

break; => หยุดการวน loop หรือออกจาก loop นั่นเอง
exit();  => หยุดการประมวลผลไฟล์นั้น
« แก้ไขครั้งสุดท้าย: 29 พฤษภาคม 2010, 18:44:59 โดย DownsTream » บันทึกการเข้า
GillBate
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 160
ออฟไลน์ ออฟไลน์

กระทู้: 1,236



ดูรายละเอียด
« ตอบ #4 เมื่อ: 29 พฤษภาคม 2010, 21:07:17 »

 Tongue จะให้มันออกตอนมีทีมที่ชนะแล้วอ่ะครับ มันอยู่ในไฟล์แทรก
เฮ้อ สุดท้ายก็ต้องถึกโดยการเอา while ออกให้เหลือ level เดียวมันถึงผ่าน แต่ก็มีไอนี่โผล่มา
Fatal error: Cannot break/continue 1 level
บันทึกการเข้า
vii
Verified Seller
สมุนแก๊งเสียว
*

พลังน้ำใจ: 132
ออฟไลน์ ออฟไลน์

กระทู้: 986



ดูรายละเอียด เว็บไซต์
« ตอบ #5 เมื่อ: 30 พฤษภาคม 2010, 20:43:28 »

Tongue จะให้มันออกตอนมีทีมที่ชนะแล้วอ่ะครับ มันอยู่ในไฟล์แทรก
เฮ้อ สุดท้ายก็ต้องถึกโดยการเอา while ออกให้เหลือ level เดียวมันถึงผ่าน แต่ก็มีไอนี่โผล่มา
Fatal error: Cannot break/continue 1 level
ไม่ใส่ break ใน if
บันทึกการเข้า

GillBate
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 160
ออฟไลน์ ออฟไลน์

กระทู้: 1,236



ดูรายละเอียด
« ตอบ #6 เมื่อ: 30 พฤษภาคม 2010, 21:04:30 »

Tongue จะให้มันออกตอนมีทีมที่ชนะแล้วอ่ะครับ มันอยู่ในไฟล์แทรก
เฮ้อ สุดท้ายก็ต้องถึกโดยการเอา while ออกให้เหลือ level เดียวมันถึงผ่าน แต่ก็มีไอนี่โผล่มา
Fatal error: Cannot break/continue 1 level
ไม่ใส่ break ใน if

แก้ได้แล้วครับ คือ ใช้ break แบบนี้ไม่ได้อ่ะครับ
while(...){
   if(...){
       if(...){... break;}
   }
}

ต้องใช้แบบนี้อ่ะครับเลยได้
while(...){
   if(...){... break;}
}

คือมันห้ามอยู่ลึกเกินไป Tongue
บันทึกการเข้า
kitazawa1st
สมุนแก๊งเสียว
*

พลังน้ำใจ: 29
ออฟไลน์ ออฟไลน์

กระทู้: 563



ดูรายละเอียด
« ตอบ #7 เมื่อ: 30 พฤษภาคม 2010, 22:39:49 »

Tongue จะให้มันออกตอนมีทีมที่ชนะแล้วอ่ะครับ มันอยู่ในไฟล์แทรก
เฮ้อ สุดท้ายก็ต้องถึกโดยการเอา while ออกให้เหลือ level เดียวมันถึงผ่าน แต่ก็มีไอนี่โผล่มา
Fatal error: Cannot break/continue 1 level
ไม่ใส่ break ใน if

แก้ได้แล้วครับ คือ ใช้ break แบบนี้ไม่ได้อ่ะครับ
while(...){
   if(...){
       if(...){... break;}
   }
}

ต้องใช้แบบนี้อ่ะครับเลยได้
while(...){
   if(...){... break;}
}

คือมันห้ามอยู่ลึกเกินไป Tongue

อยู่ลึกแค่ไหนก็ได้ครับ แต่ต้องทำเงื่อนไขให้ครอบคลุม เพื่อให้มันเจอทางออก
บันทึกการเข้า

เล็กสั้น ขยันซอย
หน้า: [1]   ขึ้นบน
พิมพ์