Want to protect your cyber security and still get fast solutions? Ask a secure question today.Go Premium

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 306
  • Last Modified:

How to make this code shorter with while or for loop

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
syedasimmeesaq
Asked:
syedasimmeesaq
  • 2
1 Solution
 
Beverley PortlockCommented:
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
 
Beverley PortlockCommented:
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
 
ycTINCommented:
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
 
Ray PaseurCommented:
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's Cloud Advisory Services

Want to avoid the missteps to gaining all the benefits of the cloud? Learn more about the different assessment options from our Cloud Advisory team.

  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now