[英]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
库中没有“全部获取”功能。 您应该改为使用mysqli
或PDO
。
在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.