我想知道如何将以下代码转换为与foreach一起使用
$query_select = "SELECT * FROM shouts ORDER BY id DESC LIMIT 8;";
$result_select = mysql_query($query_select) or die(mysql_error());
while($row = mysql_fetch_array($result_select)) {
$ename = stripslashes($row['name']);
$eemail = stripcslashes($row['email']);
$epost = stripslashes($row['post']);
$eid = $row['id'];
$grav_url = "http://www.gravatar.com/avatar.php?gravatar_id=".md5(strtolower($eemail))."&size=70";
echo ('<img src = "' . $grav_url . '" alt="Gravatar">'.'<br/>');
echo $eid . '<br/>';
echo $ename . '<br/>';
echo $eemail . '<br/>';
echo $epost . '<br/><br/><br/><br/>';
Run Code Online (Sandbox Code Playgroud)
Ban*_*Dao 10
你可以像这样编码:
$query_select = "SELECT * FROM shouts ORDER BY id DESC LIMIT 8;";
$result_select = mysql_query($query_select) or die(mysql_error());
$rows = array();
while($row = mysql_fetch_array($result_select))
$rows[] = $row;
foreach($rows as $row){
$ename = stripslashes($row['name']);
$eemail = stripcslashes($row['email']);
$epost = stripslashes($row['post']);
$eid = $row['id'];
$grav_url = "http://www.gravatar.com/avatar.php?gravatar_id=".md5(strtolower($eemail))."&size=70";
echo ('<img src = "' . $grav_url . '" alt="Gravatar">'.'<br/>');
echo $eid . '<br/>';
echo $ename . '<br/>';
echo $eemail . '<br/>';
echo $epost . '<br/><br/><br/><br/>';
}
Run Code Online (Sandbox Code Playgroud)
如您所见,从mysql_fetch_array获取数据时仍需要循环
没有一种好方法可以将它转换为foreach,因为mysql_fetch_array()只需从中获取下一个结果$result_select.如果你真的想要foreach,你可以先把所有的结果拉成一个数组,做如下的事情:
$result_list = array();
while($row = mysql_fetch_array($result_select)) {
result_list[] = $row;
}
foreach($result_list as $row) {
...
}
Run Code Online (Sandbox Code Playgroud)
但是我没有理由这样做 - 而你仍然必须使用while循环,由于mysql_fetch_array()工作原理这是不可避免的.为什么使用foreach()这么重要?
编辑:如果这只是为了学习目的:你不能将其转换为foreach.你必须有一个预先存在的数组来使用a foreach()而不是a while(),并且mysql_fetch_array()每次调用都会获取一个结果 - 没有预先存在的数组foreach()可以迭代.
| 归档时间: |
|
| 查看次数: |
124129 次 |
| 最近记录: |