| 
| 
 | 
 | 
 | 
 | 
 | 
| 		
			
			 | 
		#1 | ||
| 
			
			
			
			 You tried your best and you failed miserably. The lesson is 'never try' 
			
			
		
			
			
			Join Date: Oct 2004 
				
				
				
					Posts: 166
				 
				
				
				
				 | 
	
	
	
		
		
			
			 
				
				PHP function round();
			 
			I've been dinking with this since yesterday, dinked with it in the past and still not solid solution. 
		
	
		
		
		
		
		
		
		
		
		
	
	Scenario: I have a list that grows and gets smaller on the fly. There may be 8 things in the list, or 108 things in the list. For page design purposes I decided I want this list in a table with the number of cells in the table increasing and decreaseing with the size of the list to a maximum number of cells. As the list grows, the number of items in each cell will increase so that an equal number of items is in the first 6 cells, with overflow(if there is an overflow) of items going in the last cell. I couldnt get the round(); function to work properly for me because I always want the number to round to the next highest whole number regardless of the size of the decimal. Example: 5.00000000001 would round up to 6. Now I am forced to make this work because my work around that has been working for months, suddenly choked and the script dies. Quote: 
	
 Quote: 
	
 Any suggestions on how to make round(); work for me? -  | 
||
| 
		 | 
	
	
	
		
		
		
		
			 
		
		
		
		
		
		
			
		
		
		
	 | 
| 		
			
			 | 
		#2 | 
| 
			
			
			
			 a.k.a. Sparky 
			
			
		
			
				
			
			
			Join Date: Sep 2004 
				Location: West Palm Beach, FL, USA 
				
				
					Posts: 2,396
				 
				
				
				
				 | 
	
	
	
		
		
		
		
		 $rounded_count = (int) ($count + 0.5); 
		
	
		
		
		
		
		
		
			unless you need bankers rounding. Most people don't. 
				__________________ 
		
		
		
		
		
		
	
	SnapReplay.com a different way to share photos - iPhone & Android  | 
| 
		 | 
	
	
	
		
		
		
		
			 
		
		
		
		
		
		
			
		
		
		
	 | 
| 		
			
			 | 
		#3 | 
| 
			
			
			
			 You tried your best and you failed miserably. The lesson is 'never try' 
			
			
		
			
			
			Join Date: Oct 2004 
				
				
				
					Posts: 166
				 
				
				
				
				 | 
	
	
	
		
		
		
		
		 Perfect!  
		
	
		
		
		
		
		
		
		
		
		
	
	![]() -  | 
| 
		 | 
	
	
	
		
		
		
		
			 
		
		
		
		
		
		
			
		
		
		
	 | 
| 		
			
			 | 
		#4 | |
| 
			
			
			
			 Rock stars ... is there anything they don't know? 
			
			
		
			
				
			
			
			Join Date: Jun 2004 
				Location: in your imagination... 
				
				
					Posts: 12
				 
				
				
				
				 | 
	
	
	
		
		
		
		
		 Use ceil() function. 
		
	
		
		
		
		
		
		
			Quote: 
	
 
				__________________ 
		
		
		
		
		
		
	
	Please Re-Read The Rules For Sig Files  | 
|
| 
		 | 
	
	
	
		
		
		
		
			 
		
		
		
		
		
		
			
		
		
		
	 | 
| 		
			
			 | 
		#5 | 
| 
			
			
			
			 a.k.a. Sparky 
			
			
		
			
				
			
			
			Join Date: Sep 2004 
				Location: West Palm Beach, FL, USA 
				
				
					Posts: 2,396
				 
				
				
				
				 | 
	
	
	
		
		
		
		
		 sorry, Sams is right, you wanted ceil, not round. 
		
	
		
		
		
		
		
		
			ceil(5.000001) = 6 floor(5.000001) = 5 round(5.000001) = 5 round(5.600001) = 6 
				__________________ 
		
		
		
		
		
		
	
	SnapReplay.com a different way to share photos - iPhone & Android  | 
| 
		 | 
	
	
	
		
		
		
		
			 
		
		
		
		
		
		
			
		
		
		
	 | 
| 		
			
			 | 
		#6 | ||||
| 
			
			
			
			 You tried your best and you failed miserably. The lesson is 'never try' 
			
			
		
			
			
			Join Date: Oct 2004 
				
				
				
					Posts: 166
				 
				
				
				
				 | 
	
	
	
		
		
		
		
		 Wow! Very different results using the two different ways of handling the round up. 
		
	
		
		
		
		
		
		
		
		
		
	
	In my first post I showed two snippets of code. The second snippet is what produces the table cells that will be sent to the browser. I didnt alter that part of the code. Here are the results of what happened: Quote: 
	
 Quote: 
	
 Sams and cd34, thanks for your help! -  | 
||||
| 
		 | 
	
	
	
		
		
		
		
			 
		
		
		
		
		
		
			
		
		
		
	 | 
| 		
			
			 | 
		#7 | 
| 
			
			
			
			 a.k.a. Sparky 
			
			
		
			
				
			
			
			Join Date: Sep 2004 
				Location: West Palm Beach, FL, USA 
				
				
					Posts: 2,396
				 
				
				
				
				 | 
	
	
	
		
		
		
		
		 generally I use modulo or % to do this. 
		
	
		
		
		
		
		
		
			basically, set your $loop = 0; if ($loop % 7) { print "</tr><td>" } $loop modulo 7 = 0 when there is no remainder, i.e., the column is divisible by 7 (or if the loop is 0) You need to do some special case handling for 0, and some end of loop processing if there aren't a multiple of 7 columns in your result set. The reason for your extra column is probably that you started loop at 1, and are dividing by 7, which gives you a first blank column -- then things should realign themselves unless there is something else I'm not seeing. From what you posted, you should get 6 columns in the first row, 7 in each successive row. Another way is to use an indexed array and use two for loops... Code: 
	print "<table>";
for ($loop=0;loop<$numcols;loop+=7) {
  print "<tr>";
  for ($loop2=$loop;$loop2<$loop+7;$loop2++) {
    print "<td>asdfa</td>";
  }
  print "</tr>";
}
print "</table>";
				__________________ 
		
		
		
		
		
		
	
	SnapReplay.com a different way to share photos - iPhone & Android  | 
| 
		 | 
	
	
	
		
		
		
		
			 
		
		
		
		
		
		
			
		
		
		
	 | 
| 		
			
			 | 
		#8 | 
| 
			
			
			
			 You tried your best and you failed miserably. The lesson is 'never try' 
			
			
		
			
			
			Join Date: Oct 2004 
				
				
				
					Posts: 166
				 
				
				
				
				 | 
	
	
	
		
		
		
		
		 Your right, I may end up changing the routine to a nested loop of some kind to catch the end of the list. 
		
	
		
		
		
		
		
		
		
		
		
	
	Your example brings to mind something I've been wanting to ask someone for a long time. I read a post on php.net about 2 years ago I think, where some guy benchmarked, do, for, foreach and while. The slowest was for when it came to speed and do being the fastest. If I remember correctly do is 60% faster than for. Since then, I stopped using for statements unless dealing with very small arrays. I try to trim off any excess load that I can. Have you noticed any speed difference between any of these? -  | 
| 
		 | 
	
	
	
		
		
		
		
			 
		
		
		
		
		
		
			
		
		
		
	 | 
![]()  | 
	
	
| Thread Tools | Search this Thread | 
| Display Modes | Rate This Thread | 
		
  | 
	
		
  |