syedasimmeesaq
asked on
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
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)." %";
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
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:
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]++;
?>
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
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);
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 );