?
Solved

How to make this code shorter with while or for loop

Posted on 2009-05-15
4
Medium Priority
?
303 Views
Last Modified: 2013-12-12
I ahve this code below and I was wondering if there is a way to make it shorter

Thanks
while ($i < $allrows)
{
$T_3_1 = mysql_result($alltable, $i, "T_3_1");
$T_3_2 = mysql_result($alltable, $i, "T_3_2");
$T_3_3 = mysql_result($alltable, $i, "T_3_3");
$T_3_4 = mysql_result($alltable, $i, "T_3_4");
$T_3_5 = mysql_result($alltable, $i, "T_3_5");
$T_3_6 = mysql_result($alltable, $i, "T_3_6");
$T_3_7 = mysql_result($alltable, $i, "T_3_7");
$T_4_1 = mysql_result($alltable, $i, "T_4_1");
 
 
 
 
if($T_3_1==1){
$T_3_1_arr[$T_3_1]++;
}
if($T_3_2==1){
$T_3_2_arr[$T_3_2]++;
}
if($T_3_3==1){
$T_3_3_arr[$T_3_3]++;
}
if($T_3_4==1){
$T_3_4_arr[$T_3_4]++;
}
if($T_3_5==1){
$T_3_5_arr[$T_3_5]++;
}
if($T_3_6==1){
$T_3_6_arr[$T_3_6]++;
}
if($T_3_7==1){
$T_3_7_arr[$T_3_7]++;
}
if($T_4_1==1){
$T_4_1_arr[$T_4_1]++;
}
 
$i++;
 
 
}//closing while loop
 
// calculating the first page
 
$T_3_1trows = $allrows - $T_3_1[1];
$T_3_1pre = ($T_3_1_arr[1] / $allrows) * 100;
$T_3_1n = number_format($T_3_1pre, 2)." %";
 
$T_3_2trows = $allrows - $T_3_2[1];
$T_3_2pre = ($T_3_2_arr[1] / $allrows) * 100;
$T_3_2n = number_format($T_3_2pre, 2)." %";
 
$T_3_3trows = $allrows - $T_3_3[1];
$T_3_3pre = ($T_3_3_arr[1] / $allrows) * 100;
$T_3_3n = number_format($T_3_3pre, 2)." %";

Open in new window

0
Comment
Question by:syedasimmeesaq
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 2
4 Comments
 
LVL 34

Accepted Solution

by:
Beverley Portlock earned 2000 total points
ID: 24399816
I lack data to test it, but something along these lines might do it
<?php
 
function checkValue( & $arr, $val, $i, $alltable ) {
     $v = mysql_result( $alltable, $i, $val );
     if ( $v == 1 )
          $arr[1]++;
}
 
 
while ($i < $allrows) {
 
     checkValue( $T_3_1_arr, "T_3_1", $i, $alltable );
     checkValue( $T_3_2_arr, "T_3_2", $i, $alltable );
     checkValue( $T_3_3_arr, "T_3_2", $i, $alltable );
     checkValue( $T_3_4_arr, "T_3_2", $i, $alltable );
     checkValue( $T_3_5_arr, "T_3_2", $i, $alltable );
     checkValue( $T_3_6_arr, "T_3_2", $i, $alltable );
     checkValue( $T_3_7_arr, "T_3_2", $i, $alltable );
     checkValue( $T_4_1_arr, "T_4_1", $i, $alltable );
 
	$i++;
 
} //closing while loop
 
// calculating the first page
 
$T_3_1trows = $allrows - $T_3_1[1];
$T_3_1pre = ($T_3_1_arr[1] / $allrows) * 100;
$T_3_1n = number_format($T_3_1pre, 2) . " %";
 
$T_3_2trows = $allrows - $T_3_2[1];
$T_3_2pre = ($T_3_2_arr[1] / $allrows) * 100;
$T_3_2n = number_format($T_3_2pre, 2) . " %";
 
$T_3_3trows = $allrows - $T_3_3[1];
$T_3_3pre = ($T_3_3_arr[1] / $allrows) * 100;
$T_3_3n = number_format($T_3_3pre, 2) . " %";
?>

Open in new window

0
 
LVL 34

Expert Comment

by:Beverley Portlock
ID: 24399829
LOL - just noticed that I missed some stuff on the cut'n'paste. The middle section should be

     checkValue( $T_3_3_arr, "T_3_3", $i, $alltable );
     checkValue( $T_3_4_arr, "T_3_4", $i, $alltable );
     checkValue( $T_3_5_arr, "T_3_5", $i, $alltable );
     checkValue( $T_3_6_arr, "T_3_6", $i, $alltable );
     checkValue( $T_3_7_arr, "T_3_7", $i, $alltable );
 
0
 
LVL 7

Expert Comment

by:ycTIN
ID: 24401157
many statement are waste in you code

if($T_4_1==1){
   $T_4_1_arr[$T_4_1]++; //$T_4_1  = 1
}


:) shortest code:

<?php
$collection = array("T_3_1","T_3_2","T_3_3","T_3_4","T_3_5","T_3_6","T_3_7","T_4_1");
while ($i < $allrows) foreach ($collection as $key) if (1 == mysql_result($alltable, $i++, $key)) @${$key."_arr"}[1]++;
?>

Open in new window

0
 
LVL 111

Expert Comment

by:Ray Paseur
ID: 24403944
Those repeated numbers in the variable names indicate to me that this might be a good place to use a multidimensional array instead of explicitly coded scalar variable names.  Just a thought.  

Also, have a look at the code snippet.  If I understand correctly, you have just done a MySQL query where you returned a results set containing columns named like T_3_1, T_3_2, etc.  The two segments below are likely to give equivalent results, and the latter will be substantially faster.

HTH, ~Ray
// FROM THE OP
$T_3_1 = mysql_result($alltable, $i, "T_3_1");
$T_3_2 = mysql_result($alltable, $i, "T_3_2");
$T_3_3 = mysql_result($alltable, $i, "T_3_3");
$T_3_4 = mysql_result($alltable, $i, "T_3_4");
$T_3_5 = mysql_result($alltable, $i, "T_3_5");
$T_3_6 = mysql_result($alltable, $i, "T_3_6");
$T_3_7 = mysql_result($alltable, $i, "T_3_7");
$T_4_1 = mysql_result($alltable, $i, "T_4_1");
 
// AN ALTERNATIVE
$row = mysql_fetch_assoc($alltable);
extract($row);

Open in new window

0

Featured Post

Concerto Cloud for Software Providers & ISVs

Can Concerto Cloud Services help you focus on evolving your application offerings, while delivering the best cloud experience to your customers? From DevOps to revenue models and customer support, the answer is yes!

Learn how Concerto can help you.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

3 proven steps to speed up Magento powered sites. The article focus is on optimizing time to first byte (TTFB), full page caching and configuring server for optimal performance.
There are times when I have encountered the need to decompress a response from a PHP request. This is how it's done, but you must have control of the request and you can set the Accept-Encoding header.
The viewer will learn how to look for a specific file type in a local or remote server directory using PHP.
This tutorial will teach you the core code needed to finalize the addition of a watermark to your image. The viewer will use a small PHP class to learn and create a watermark.
Suggested Courses

649 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question