繁体   English   中英

用foreach替换while循环

[英]replace while loop with foreach

我有这样的php代码:

$categories_query = tep_db_query("select categories_id, categories_name from categories order by categories_name");
while ($categories = mysql_fetch_array($categories_query)) {
$categories_array[] = array('id' => $categories['categories_id'], 'text' => $categories['categories_name']);
}

问题是如何用例如foreach替换while循环,这样我可以先获取mysql数组,然后再编辑一些值,然后将其传递给循环? 我尝试了不同版本的循环,但是它们给我的结果与while循环不同。

PHP没有mysql_fetch函数可一次交付所有行,可在foreach外观中使用。

尝试将所有行放在一个循环中,并用所有行构建一个数组。 然后,遍历此数组并执行您所描述的操作。

从外观上看,循环的目的只是重命名一些表列。

做就是了:

<?php
  $categories_array = mysqli_query( mysqli_fetch_assoc($con,"SELECT categories_id AS id, categories_name AS text FROM categories ORDER BY categories_name") );
?>

你尝试过的看起来不错。 在旧的和已弃用的mysql库中没有“全部获取”功能。 您应该改为使用mysqliPDO
PDO您可以仅使用$statement->fetchAll()来获取所有结果数据。

如果您仍然想用旧的mysql库解决问题,则:

$categories_query = tep_db_query("select categories_id, categories_name from categories order by categories_name");
while ($categories = mysql_fetch_array($categories_query)) 
{
    $categories_array[] = array('id' => $categories['categories_id'], 'text' =>     $categories['categories_name']);
}

// do something with your $categories_array here

foreach($categories_array AS $array => $row)
{
    // you can output / access each row here e.g. with: $row['id']
    // or you can do a second foreach-loop for the columns:
    foreach($row AS $col => $data)
    {
        echo $data;
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM