Forum Moderators: coopster

Message Too Old, No Replies

array in wrong format?

         

jackvull

8:40 pm on Apr 7, 2011 (gmt 0)

10+ Year Member



I am trying to get data from a SQL database into an array using mysqli.


$ratio[] = array($row->Ratio);
$mean[] = array($row->Mean);
$meanupper[] = array($row->MeanUpper);
$meanlower[] = array($row->MeanLower);
}
}

$mysqli->close();

/////////////////
//DATA
/////////////////
//$datay1 = array(0.7,0.8,0.8,0.8,0.9,1.1,1.2,0.8);
//$datay2 = array(0.8,0.8,0.8,0.8,0.8,0.8,0.8,0.8); //lower
//$datay3 = array(1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0); //mean
//$datay4 = array(1.2,1.2,1.2,1.2,1.2,1.2,1.2,1.2); //upper

$datay1 = compact($ratio);
$datay2 = compact($meanlower);
$datay3 = compact($mean);
$datay4 = compact($meanupper);


When I use the code manually:
$datay1 = array(0.7,0.8,0.8,0.8,0.9,1.1,1.2,0.8);
I get an array of:
Array ( [0] => 0.7 [1] => 0.8 [2] => 0.8 [3] => 0.8 [4] => 0.9 [5] => 1.1 [6] => 1.2 [7] => 0.8 )

However, from the SQL it seems to be:
Array ( [0] => Array ( [0] => 1.64 ) [1] => Array ( [0] => 1.64 ) [2] => Array ( [0] => 1.62 ) [3] => Array ( [0] => 1.65 ) [4] => Array ( [0] => 1.68 ) [5] => Array ( [0] => 1.67 ) [6] => Array ( [0] => 1.66 ) [7] => Array ( [0] => 1.70 ) [8] => Array ( [0] => 1.68 ) [9] => Array ( [0] => 1.64 ) [10] => Array ( [0] =

Is there a way to convert the $ratio array into something like the 1st?

eelixduppy

9:49 pm on Apr 7, 2011 (gmt 0)



You have to flatten the arrays because each row from the db query returns an array, not a single value.

Try this:

$result = array();
for($i = 0; $i < count($datay1); $i++) {
$result[$i] = $datay1[$i][0];
}


Now $result will contain the flattened array, as you wanted.

[edited by: eelixduppy at 2:43 pm (utc) on Apr 8, 2011]

jackvull

5:57 am on Apr 8, 2011 (gmt 0)

10+ Year Member



The array doesn't look quite right somehow. It seems to 00,01,02,03,04,05 instead of 0,1,2,3,4,5,etc

$datay1 = array();
for($i = 0; $i < count($ratio); $i++) {
$datay1[$i] = $ratio[0];
$datay2[$i] = $meanlower[0];
$datay3[$i] = $mean[0];
$datay4[$i] = $meanupper[0];
}
print_r($datay1);



Array ( [0] => Array ( [0] => 1.64 ) [1] => Array ( [0] => 1.64 ) [2] => Array ( [0] => 1.64 ) [3] => Array ( [0] => 1.64 ) [4] => Array ( [0] => 1.64 ) [5] => Array ( [0] => 1.64 ) [6] => Array ( [0] => 1.64 ) [7] => Array ( [0] => 1.64 ) [8] => Array ( [0] => 1.64 ) [9] => Array ( [0] => 1.64 ) [10] => Array ( [0] => 1.64 ) [11] => Array ( [0] => 1.64 ) [12] => Array ( [0] => 1.64 ) [13] => Array ( [0] => 1.64 ) [14] => Array ( [0] => 1.64 ) [15] => Array ( [0] => 1.64 ) [16] => Array ( [0] => 1.64 ) [17] => Array ( [0] => 1.64 ) [18] => Array ( [0] => 1.64 ) [19] => Array ( [0] => 1.64 ) [20] => Array ( [0] => 1.64 ) [21] => Array ( [0] => 1.64 ) [22] => Array ( [0] => 1.64 ) [23] => Array ( [0] => 1.64 ) [24] => Array ( [0] => 1.64 ) [25] => Array ( [0] => 1.64 ) [26] => Array ( [0] => 1.64 ) [27] => Array ( [0] => 1.64 ) [28] => Array ( [0] => 1.64 ) [29] => Array ( [0] => 1.64 ) [30] => Array ( [0] => 1.64 ) [31] => Array ( [0] => 1.64 ) [32

jackvull

6:11 am on Apr 8, 2011 (gmt 0)

10+ Year Member



just realised it should be:
$ratio[$i][0]
etc

Thanks!

eelixduppy

2:44 pm on Apr 8, 2011 (gmt 0)



Yes, sorry.