为什么我的列表函数只输出数组的第一个值


Why is my list function only outputting first value of my array?

我还是个php新手...如果这是一个愚蠢的问题,我深表歉意。

我有一个数值数组("视图"),每个"视图"特定于视频。我想将顶部"视图"输出到表格(html)的单元格中。无论我的列表是升序还是降序,我仍然只能看到列表的第一个数字(但正确的数字)(第一行中的 $views 1)。这是我的代码:

<? php //lots of code, followed by
include 'connect.php';
$views=mysql_fetch_array(mysql_query("SELECT video.views FROM video ORDER by  
video.views DESC LIMIT 10"));   
list($views1,$views2,$views3,$views4,$views5,$views6,$views7,$views8,$views9,$views10)  
= $views;
?>
<html>
<body>
<table>
<tr><td><?php echo $views1 ?></td></tr>
<tr><td><?php echo $views2 ?></td></tr>
. //My actual code has 10 rows going from $views1 to $views10 
.
. 
<tr><td><?php echo $views10 ?></td></tr>
</body>
</html>

我只是看不出问题是什么...感谢您的任何帮助!

这段代码应该有效:

<?php //lots of code, followed by
include 'connect.php';
$q=mysql_query("SELECT video.views FROM video ORDER by video.views DESC LIMIT 10");
$views=array();
while ($views[]=mysql_fetch_array($q));
?>
<html>
  <body>
    <table>
        <?php
        foreach ($views as $view)
            echo '<tr><td>'.$view['views'].'</td></tr>';
        ?>
    </table>
  </body>
</html>

不要忘记,你不应该写重复的代码,循环就在那里。

使用

var_dump($views);

在你的 list(...) 语句之前调试它。可能是$views没有像你想象的那样被填充。

这是因为mysql_fetch_array获取行,因此即使以这种方式分配变量列表也只会设置结果中列数的列数 - 在您的情况下为一行。请改用类似的东西:

$res = mysql_query(...);
while ($arr = mysql_fetch_array($res)) $views[] = $arr[0];

<tr><td><?=$views[0]?></td></tr>
...

顺便说一下,mysql 扩展已被弃用,请改用 mysqli。