ThaiSEOBoard.com

พัฒนาเว็บไซต์ => Programming => ข้อความที่เริ่มโดย: GillBate ที่ 29 พฤษภาคม 2010, 17:59:24



หัวข้อ: [php] ช่วยผมออกจาก LOOP หน่อยครับ!
เริ่มหัวข้อโดย: GillBate ที่ 29 พฤษภาคม 2010, 17:59:24
 :P ปวดเฮดกับมันจริงๆ ทำมาเกือบครึ่งวันแล้ว มันไม่ออกซักที แต่ละครั้งก็แจ้งเออเร่อไม่ซ้ำบรรทัด 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


หัวข้อ: Re: [php] ช่วยผมออกจาก LOOP หน่อยครับ!
เริ่มหัวข้อโดย: DownsTream ที่ 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 อย่างที่เห็นแหละครับ



หัวข้อ: Re: [php] ช่วยผมออกจาก LOOP หน่อยครับ!
เริ่มหัวข้อโดย: mikey99 ที่ 29 พฤษภาคม 2010, 18:31:24
break;  กับ exit();  ต่างกันไงหรอครับ


หัวข้อ: Re: [php] ช่วยผมออกจาก LOOP หน่อยครับ!
เริ่มหัวข้อโดย: DownsTream ที่ 29 พฤษภาคม 2010, 18:42:51
break; => หยุดการวน loop หรือออกจาก loop นั่นเอง
exit();  => หยุดการประมวลผลไฟล์นั้น


หัวข้อ: Re: [php] ช่วยผมออกจาก LOOP หน่อยครับ!
เริ่มหัวข้อโดย: GillBate ที่ 29 พฤษภาคม 2010, 21:07:17
 :P จะให้มันออกตอนมีทีมที่ชนะแล้วอ่ะครับ มันอยู่ในไฟล์แทรก
เฮ้อ สุดท้ายก็ต้องถึกโดยการเอา while ออกให้เหลือ level เดียวมันถึงผ่าน แต่ก็มีไอนี่โผล่มา
Fatal error: Cannot break/continue 1 level


หัวข้อ: Re: [php] ช่วยผมออกจาก LOOP หน่อยครับ!
เริ่มหัวข้อโดย: vii ที่ 30 พฤษภาคม 2010, 20:43:28
:P จะให้มันออกตอนมีทีมที่ชนะแล้วอ่ะครับ มันอยู่ในไฟล์แทรก
เฮ้อ สุดท้ายก็ต้องถึกโดยการเอา while ออกให้เหลือ level เดียวมันถึงผ่าน แต่ก็มีไอนี่โผล่มา
Fatal error: Cannot break/continue 1 level
ไม่ใส่ break ใน if


หัวข้อ: Re: [php] ช่วยผมออกจาก LOOP หน่อยครับ!
เริ่มหัวข้อโดย: GillBate ที่ 30 พฤษภาคม 2010, 21:04:30
:P จะให้มันออกตอนมีทีมที่ชนะแล้วอ่ะครับ มันอยู่ในไฟล์แทรก
เฮ้อ สุดท้ายก็ต้องถึกโดยการเอา while ออกให้เหลือ level เดียวมันถึงผ่าน แต่ก็มีไอนี่โผล่มา
Fatal error: Cannot break/continue 1 level
ไม่ใส่ break ใน if

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

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

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


หัวข้อ: Re: [php] ช่วยผมออกจาก LOOP หน่อยครับ!
เริ่มหัวข้อโดย: kitazawa1st ที่ 30 พฤษภาคม 2010, 22:39:49
:P จะให้มันออกตอนมีทีมที่ชนะแล้วอ่ะครับ มันอยู่ในไฟล์แทรก
เฮ้อ สุดท้ายก็ต้องถึกโดยการเอา while ออกให้เหลือ level เดียวมันถึงผ่าน แต่ก็มีไอนี่โผล่มา
Fatal error: Cannot break/continue 1 level
ไม่ใส่ break ใน if

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

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

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

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