php - How to create a multidimensional array out of an array and perform a filtering? -


my goal keep array values in array don't know how can that. here's simple array:

$grand_total = $total + $cost; $cost_ratio = ($cost/$grand_total) * 100; $paid_ratio = ($total/$grand_total) * 100;  $info[] = array(              'id' => $data['id'],              'ratio' => $cost_ratio,              'status' => $status            ); 

here's sample array output

array ( [0] => array     (         [id] => 53         [ratio] => 100         [status] => c     )  [1] => array     (         [id] => 57         [ratio] => 100         [status] =>     )  [2] => array     (         [id] => 60         [ratio] => 1.3157894736842         [status] =>     ) 

after creating array next thing filter getting ratio. have seen above have variable $cost_ratio, variable 1 filter array.

here's continuation of code:

 //declare variable  $var1 = 0;  $var2 = 0;  $var3 = 0;  $var4 = 0;  $var5 = 0;  $var6 = 0;  $var7 = 0;  $var8 = 0;  $var9 = 0;  $var10 = 0; 

after that

  for($x = 0; $x < sizeof($info); $x++){              $status_info = $info[$x]['status'];             $temp = $info[$x]['ratio'];              /*this set filter*/              /*if temp <= 9, need put of array has ratio <= 9*/              if($temp <= 9){                 $var1++;             }else if($temp <= 19){                 $var2++;             }else if($temp <= 29){                 $var3++;             }else if($temp <= 39){                 $var4++;             }else if($temp <= 49){                 $var5++;             }else if($temp <= 59){                 $var6++;             }else if($temp <= 69){                 $var7++;             }else if($temp <= 79){                 $var8++;             }else if($temp <= 89){                 $var9++;             }else{                 $var10++;             }        } 

and lastly table displaying records

  echo "<table border='1'>";          echo "<tr>";             echo "<td>percentage range</td>";             echo "<td>volume</td>";             echo "<td>ratio</td>";             echo "<td>backordered</td>";             echo "<td>canceled</td>";             echo "<td>cod approved</td>";             echo "<td>cod pending</td>";             echo "<td>cod shipped</td>";             echo "<td>completed</td>";             echo "<td>declined</td>";             echo "<td>failed</td>";             echo "<td>fraud checking</td>";             echo "<td>paid & waiting shipping</td>";             echo "<td>pending</td>";             echo "<td>shipped</td>";             echo "<td>test</td>";             echo "<td>waiting approval</td>";             echo "<td>waiting payment</td>";         echo "</tr>";          echo "<tr>";             echo "<td>10% - 90%</td>";             echo "<td>".$var1."</td>"; <!-- if ratio has value between 1 - 9 go here -->             echo "<td></td>";             echo "<td>".$x1."</td>";             echo "<td>".$x2."</td>";             echo "<td>".$x3."</td>";             echo "<td>".$x4."</td>";             echo "<td>".$x5."</td>";             echo "<td>".$x6."</td>";             echo "<td>".$x7."</td>";             echo "<td>".$x8."</td>";             echo "<td>".$x9."</td>";             echo "<td>".$x10."</td>";             echo "<td>".$x11."</td>";             echo "<td>".$x12."</td>";             echo "<td>".$x13."</td>";             echo "<td>".$x14."</td>";             echo "<td>".$x15."</td>";                   echo "</tr>";          echo "<tr>";             echo "<td>20% - 80%</td>"; <!-- if ratio has value between 10 - 19 go here -->             echo "<td>".$var2."</td>";             echo "<td></td>";             echo "<td>".$x1."</td>";             echo "<td>".$x2."</td>";             echo "<td>".$x3."</td>";             echo "<td>".$x4."</td>";             echo "<td>".$x5."</td>";             echo "<td>".$x6."</td>";             echo "<td>".$x7."</td>";             echo "<td>".$x8."</td>";             echo "<td>".$x9."</td>";             echo "<td>".$x10."</td>";             echo "<td>".$x11."</td>";             echo "<td>".$x12."</td>";             echo "<td>".$x13."</td>";             echo "<td>".$x14."</td>";             echo "<td>".$x15."</td>";                   echo "</tr>";  .  . 

here's want do:

[ratio between 1 - 9 value] = array(      [0] = array(               'id' => 1,               'status' => 'c'            ),      [1] = array(               'id' => 3,               'status' => 'd'            ),      [2] = array(               'id' => 6,               'status' => 'j'            ),  ),  [ratio between 10 - 19 value] = array(      [0] = array(               'id' => 1,               'status' => 'c'            ),      [1] = array(               'id' => 3,               'status' => 'd'            ),      [2] = array(               'id' => 6,               'status' => 'j'            ),  ), . . . 

that's want having hard time that.

you can group array doing following:

$array = array(     array( 'id' => 53, 'ratio' => 100, 'status' => 'i'),     array( 'id' => 54, 'ratio' => 50, 'status' => 'c'),     array( 'id' => 56, 'ratio' => 42, 'status' => 'd') );  // grouping array ratio $group = array(); foreach($array $value) {     $groupindex = min($value['ratio'] / 10, 9);     $group[$groupindex][] = $value; }  var_dump($group); 

here sample output

 array (size=3)   9 =>      array (size=1)       0 =>          array (size=3)           'id' => int 53           'ratio' => int 100           'status' => string 'i' (length=1)   5 =>      array (size=1)       0 =>          array (size=3)           'id' => int 54           'ratio' => int 50           'status' => string 'c' (length=1)   4 =>      array (size=1)       0 =>          array (size=3)           'id' => int 56           'ratio' => int 42           'status' => string 'd' (length=1) 

noted index 9 means 90+, 5 means 50 59, , 4 means 40 49. if confused index convention, here full list:

$group[0]   <--- 0 9 $group[1]   <--- 10 19 $group[2]   <--- 20 29 $group[3]   <--- 30 39 $group[4]   <--- 40 49 $group[5]   <--- 50 59 $group[6]   <--- 60 69 $group[7]   <--- 70 79 $group[8]   <--- 80 89 $group[9]   <--- 90+ 

Comments

Popular posts from this blog

Unable to remove the www from url on https using .htaccess -