Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 109,027

HOME > PHP > PHP Forum > สอบถาม การใช้ loop เพื่อนำค่ามาก บวก กันค่ะ แต่ไม่รู้จะวนลูปยังไงดีค่ะ เงื่อนไข มีหลายเงื่อนไขมากค่ะ



 

สอบถาม การใช้ loop เพื่อนำค่ามาก บวก กันค่ะ แต่ไม่รู้จะวนลูปยังไงดีค่ะ เงื่อนไข มีหลายเงื่อนไขมากค่ะ

 



Topic : 122015



โพสกระทู้ ( 228 )
บทความ ( 0 )



สถานะออฟไลน์




อ่านค่าจาก test.text ค่ะ

แล้วอยากทำการนำค่า มาบวกกัน ถ้าค่าบวกกันแล้วได้ > 3000 ให้หยุด loop ค่ะ

Code (PHP)
<?php
$TKK=array();

$Qdata = "test.txt" ;
$assay = file($Qdata) ;

foreach ($assay as $line_num=>$line){
	
			 $TK = substr($line,4,4);
			 $TKK[]=$TK;
}
//-------------------------------------------------------------

foreach($TKK as $key=>$value){
	
	 $TKx = $TKK[$key]; 
  
	 if($TKx >=0){ 
			  
			  //loop
			    
	   }
	 
}//for
?>


ตอนนี้ติดตรงที่ไม่รู้จะนำค่าที่ได้มา วนลูปยังไงดีค่ะ รู้สึก งงๆ
คำณวนเหมือนในรูป ค่ะ

2

loop 1
เช่นแถวที่ 1 + แถว ที่ 2 ค่าได้ 2800 แต่ถ้า + แถวที่ 3 ด้วย ค่าจะเกิน 3000 ทำให้ loop ครั้งที่ 1 ก็จะถึงแค่ แถวที่ 2 ค่ะ
แล้วให้ทำการ echo 1 ; ในแถวที่ 1 กับ 2 ค่ะ

loop 2
ก็จะเริ่มจาก แถวที่ 3 ค่ะ ถ้า บวก กับแถวที่ 4 ค่ายังไม่เกิน 3000 แต่ถ้า บวกกับแถวที่ 5 ค่าจะเกินค่ะ loop ครั้งที่ 2 ก็จะหยุดแค่ แถวที่ 4

loop 3 ก็จะเริ่มที่ แถวที่ 5

ประมาณนี้ค่ะ
แต่มันจะมี หลายกรณีอีกค่ะ เช่น

- ถ้าค่า ที่อ่านได้เป็น -1 ให้ echo 0 ;
- ถ้า บวกค่าไปเรื่อยๆแล้วเจอ -1 ให้หยุด loop แล้วบวกค่า ที่อ่านมา ถ้ามากกว่า 3000 echo 0; น้อยกว่า echo 1; // line 12 13 14 15 16
- ถ้า เจอ -1 ประกบ บนล่าง เช่น line 21 แล้วถ้าค่า ถ้ามากกว่า 3000 echo 0; น้อยกว่า echo 1;
- ถ้า ค่าไหนมากกว่า 3000 เลยโดยที่ยังไม่ได้ บวกกับค่า อื่น echo 0; // line 5

อยากให้ได้ผลลัพธ์ แบบนี้ค่ะ

3

รบกวนด้วยค่ะ งมมา 2 วัน ไปไม่ถูกเลยค่ะ หนูไม่ค่อยเก่งด้วย กำลังศึกษาด้วยค่ะ ขอบคุณมากๆค่ะ



Tag : PHP







Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2016-03-19 15:22:02 By : sammam View : 3304 Reply : 6
 

 

No. 1



โพสกระทู้ ( 9,556 )
บทความ ( 2 )



สถานะออฟไลน์


เขียน flowcontrol เป็นภาษาที่เราเข้าใจนั่นแหล่ะถูกแล้ว
ทำมันทีละบันทัดเลย แล้วค่อยใส่โค๊ดเข้าไปทีละบันทัด

งานนี้คงไม่เขียนให้ เพราะมันเป็น อัลกอฯ ของคุณแล้วว่าจะทำยังไง
มันเป็นการวางสูตร ถ้าจะให้คิดให้คงต้องขอค่าแรง 5555






แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2016-03-19 16:27:36 By : Chaidhanan
 


 

No. 2



โพสกระทู้ ( 228 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 1 เขียนโดย : Chaidhanan เมื่อวันที่ 2016-03-19 16:27:36
รายละเอียดของการตอบ ::
ใบ้ ตรง loop ให้หน่อยได้ไหมค่ะ เผื่อเป็นแนวทางค่ะ

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2016-03-19 17:04:40 By : sammam
 

 

No. 3



โพสกระทู้ ( 9,556 )
บทความ ( 2 )



สถานะออฟไลน์


Code (PHP)
$ix=0; $sum = 0;
foreach($TKK as $key=>$value){
	$vl = intval($value);
	if( $vl==-1){
		if($ix==0) echo 0; 
		else{
			echo ($sum>3000)? 0 : 1;
			$ix = 0;
		}
	}else ที่เหลือ ลองคิดเองครับ
		.....
		.....
}

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2016-03-19 19:09:48 By : Chaidhanan
 


 

No. 4



โพสกระทู้ ( 228 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 3 เขียนโดย : Chaidhanan เมื่อวันที่ 2016-03-19 19:09:48
รายละเอียดของการตอบ ::
ขอบคุณค่ะอาจารย์. ขอลองไปปรับใช้ก่อนค่ะ

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2016-03-19 22:09:33 By : sammam
 


 

No. 5



โพสกระทู้ ( 228 )
บทความ ( 0 )



สถานะออฟไลน์


ใช้ตัวนี้ในการ sum ค่ะ

Code (PHP)
foreach($TKK as $key=>$value){
	
	 $TKx = $TKK[$key]; 
	 $LL= $L[$key]; 
  
	 if($TKx >=0){ 
	 
	  for($i=0;$i<10;$i++){
		  
		  $sumx += $TKx;
		  
		  if($sumx > 3000){
			echo "Line = $LL  ";  echo" value = 0 sum = $sumx  "; echo"<br>"; $sumx=0 ;break; 
		  }else{
			echo "Line = $LL  ";  echo" value = 1 sum = $sumx  ";echo"<br>"; $sumx=0 ; break; 
			  
		  }
			   
	  }
			    
	   }
	   else{
		   echo "Line = $LL  ";  echo" value = 0 sum = $sumx  "; echo"<br>"; 
	   }
	 
}//for


ตอนนี้ติดตรงที่ ถ้าข้อมูล $TKx = $TKK[$key] ที่นำมาคำนวณในลูป for แล้ว ถ้า ออกจาก loop
อยากให้ foreach($TKK as $key=>$value) ให้เริ่มจากข้อมูลสุดท้าย ที่นำมาคำนวณใน loop for เช่น

1 1000
2 1800
3 400
4 900
5 5000

line 1 + line 2 = 2800 ==> loop 1
อยากให้ loop 2 เริ่มจาก line 3 ค่ะ เพราะ line 2 มัน คำนวณใน loop 1 แล้ว

รบกวนช่วยด้วยค่ะ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2016-03-20 18:18:35 By : sammam
 


 

No. 6



โพสกระทู้ ( 9,556 )
บทความ ( 2 )



สถานะออฟไลน์


loop 2 ที่ line 3 เริ่มนับใหม่ เหมือน loop 1 หรือเปล่า

และ line 7,8,9,10 มันครบ loop 1 ที่ 9 ต้องเริ่มนับใหม่ ที่ 9 หรือเปล่า
ถ้านับใหม่เหมือนกัน ทำไม มันถึงเป็น 0 ไม่เป็น 1 เหมือน line 3

รายละเอียดไม่ชัดเจน ทับซ้อนกันอยู่

ตัวอย่างข้างล่างยังไม่สมบูรณ์ ก็ลองเองต่อเอานะครับ
Code (PHP)
<?php
$TKK = array(
1000, 1800, 400, 900, 5000, -1, 1200, 1550, 1762,
1852, -1, 500, 400, 100, 800, -1, -1, -1, -1, -1, 2200, -1, -1
);
$sum = 0; $last=0; $num_element = count($TKK);
foreach($TKK as $key=>$vl){
	$next = $key + 1;
	if( $vl==-1){
		echo $vl,',',0, '<br>'; //- ถ้าค่า ที่อ่านได้เป็น -1 ให้ echo 0 ;
		$sum = 0; $last = 0;
	}else{
		$sum += $vl;
		if( $sum > 3000){
			echo $vl,',',0,'<br>'; 
			$sum = 0; $last = 0;
		}elseif($next<$num_element){
			$y = $TKK[$next];
			if(($sum + $y)>3000){
				echo $vl,',',1, '<br>'; 
				$last = $sum; $sum = 0; 
			}elseif(($sum + $last)>3000){
				echo $vl,',',0, '<br>'; 
				$last = $sum; $sum = 0;
			}else{
				echo $vl,',',1, '<br>'; 
			}
		}else{
			echo $vl,',',1, '<br>';
		}			
	}
}




ประวัติการแก้ไข
2016-03-20 22:13:00
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2016-03-20 22:09:31 By : Chaidhanan
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : สอบถาม การใช้ loop เพื่อนำค่ามาก บวก กันค่ะ แต่ไม่รู้จะวนลูปยังไงดีค่ะ เงื่อนไข มีหลายเงื่อนไขมากค่ะ
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ FTP| ใส่แถวของตาราง ใส่คอลัมน์ตาราง| ตัวยก ตัวห้อย ตัวพิมพ์ดีด| ใส่โค้ด ใส่การอ้างถึงคำพูด| ใส่ลีสต์
smiley for :lol: smiley for :ken: smiley for :D smiley for :) smiley for ;) smiley for :eek: smiley for :geek: smiley for :roll: smiley for :erm: smiley for :cool: smiley for :blank: smiley for :idea: smiley for :ehh: smiley for :aargh: smiley for :evil:
Insert PHP Code
Insert ASP Code
Insert VB.NET Code Insert C#.NET Code Insert JavaScript Code Insert C#.NET Code
Insert Java Code
Insert Android Code
Insert Objective-C Code
Insert XML Code
Insert SQL Code
Insert Code
เพื่อความเรียบร้อยของข้อความ ควรจัดรูปแบบให้พอดีกับขนาดของหน้าจอ เพื่อง่ายต่อการอ่านและสบายตา และตรวจสอบภาษาไทยให้ถูกต้อง

อัพโหลดแทรกรูปภาพ

Notice

เพื่อความปลอดภัยของเว็บบอร์ด ไม่อนุญาติให้แทรก แท็ก [img]....[/img] โดยการอัพโหลดไฟล์รูปจากที่อื่น เช่นเว็บไซต์ ฟรีอัพโหลดต่าง ๆ
อัพโหลดแทรกรูปภาพ ให้ใช้บริการอัพโหลดไฟล์ของไทยครีเอท และตัดรูปภาพให้พอดีกับสกรีน เพื่อความโหลดเร็วและไฟล์ไม่ถูกลบทิ้ง

   
  เพื่อความปลอดภัยและการตรวจสอบ กระทู้ที่แทรกไฟล์อัพโหลดไฟล์จากที่อื่น อาจจะถูกลบทิ้ง
 
โดย
อีเมล์
บวกค่าให้ถูก
<= ตัวเลขฮินดูอารบิก เช่น 123 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)







Exchange: นำเข้าสินค้าจากจีน, Taobao, เฟอร์นิเจอร์, ของพรีเมี่ยม, ร่ม, ปากกา, power bank, แฟลชไดร์ฟ, กระบอกน้ำ

Load balance : Server 03
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2024 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 อัตราราคา คลิกที่นี่