回显PHP数组不返回结果

So, guys, my problem is that i'm creating an array from a mysql column, but, when i echo the array items, it returns me nothing, i'm about this for a while and i'm not seeing a possible error, hope can get some help. Here' s my code: (I know about the mysql to mysqli, but i'm just beginning and trying the logical stuff. :))

$duracao = mysql_query(
    "SELECT SUM(fim_periodo-inicio_periodo)/0.01666667 AS mysum
 FROM afunda_eleva_$a"
); //THIS $duracao IS INSIDE A FOR LOOP THAT EXECUTES THE QUERY IF A CONDITION IS SATISFIED (DEPENDING ON $a and $prevNum), it is working fine!

while ($row2 = mysql_fetch_assoc($duracao))
{
    $duracao_afunda_eleva[] = $row2['mysum'];
}

so, to test some possible problems, i've put:

$i2 = sizeof($duracao_afunda_eleva);    
echo $i2;
echo <br>;

which returns me the right size of the array, the problem comes here, i think:

for($i1 = 0 ; $i1 < sizeof($duracao_afunda_eleva); $i1++)    
{
    echo $duracao_afunda_eleva[$i1] or die("couldn't echo"
    . mysql_error());        
    echo "<br>";    
}

and this returns me no value. I really would appreciate any suggestion. Thanks in advance!

Try print_r instead of echo - echo outputs (string)$variable, which in case of an array is just "array". Also, echo is a language construct and not a function, so your or die(...) is problematic, as language constructs don't have return values.

Generally it's better to not use or die(...) constructs, and handle problems correctly (using a defined return value, so cleanup code can run, for example). Also, not being able to output anything with echo would mean that your php/whatever installation is seriously gone bad, at which point you probably won't even reach that line in your code, and even then it won't have anything to do with mysql.

Since the problem is not in the variable, try to use an alias in your MySQL select:

SELECT SUM(fim_periodo-inicio_periodo)/0.01666667 as mysum

Then in your PHP, you can get $row2['mysum'];
It may not solve the problem, but it is a good start.

Use this code:

for($i1 = 0 ; $i1 < sizeof($duracao_afunda_eleva); $i1++)    
{
   echo $duracao_afunda_eleva[$i1] or die("couldn't echo". mysql_error());        
   echo "<br>";    
}

You increased $i instead of $i1.

Although, with arrays, it's usually easier to use a foreach loop. This runs from the first to the last element in the array.

Like so:

foreach ($duracao_afunda_eleva as $value) {
    echo $value;
}

I would also suggest removing the space in $row2 ['mysum']:

$duracao_afunda_eleva[] = $row2['mysum'];

Edit

Just noticed it now, but your fetch-statement is wrong... It has a typo in it:

while ($row2 = mysql_fetch_assoc($duracao))

Make sure it reads mysql instead of myqsl.

Personally I use:

$arr = array ( /* ... */ );
echo "<pre>";
var_dump($arr);
echo "</pre>";

A quick tip is not to use the sizeof function in your for loop. This gets run with each iteration of your loop and you will notice an improvement in performance if you move it outside the loop (or use a foreach loop instead). e.g.

$count = sizeof($duracao_afunda_eleva);
for($i = 0 ; $i < $count; $i++) {
    echo $duracao_afunda_eleva[$i] . '<br />';
}

or

// Foreach loop example
foreach ($duracao_afunda_eleva as $key => $value) {
    echo $value . '<br />';
}

or what you could also do is this one line

echo implode('<br />', $duracao_afunda_eleva);

In your last for-loop, you use $i++, it should be $i1++