我正在尝试使用类似这样的东西将MySQL while循环链接到foreach循环:
if($something == true){
foreach($array as $arr){
} else {
while($row = mysql_fetch_array($mysql_query)){
}
// loop instructions
}
看起来很错,我知道但是你看到我想要做什么?..如果$something
为真,我想从数组中获取数据,否则从数据库中获取数据
我有另一个解决方案想法,它可以手动匹配数组$mysql_query
如何工作,所以我只能使用它们while
,如下所示:
if($something == true){
$mysql_query = array("username" => "$_GET['username']", "password" => "$_GET['password']");
} else {
$mysql_query = mysql_query("SELECT * FROM users WHERE usern......");
}
while($row = mysql_fetch_array($mysql_query)){
...
这是第二种方法,但它看起来也不对,因为第一个数组是正常的,我想匹配正常数组mysql_query
如何构建它以便它可以适应while循环
P.S。 :我不要想重复写循环指令,我希望它们只能像我上面提到的一样工作
答案 0 :(得分:2)
将您的处理功能化为一个功能:
function process_data($data) {
// do stuff
}
if($something){
foreach($array as $arr){
process_data($arr);
}
} else {
while($row = mysql_fetch_array($mysql_query)){
process_data($row);
}
}
答案 1 :(得分:1)
此处的其他答案都很好,但您最好只是为了确保$array
是一个有效的数组而不管something
......怎么样
if (!something){
$array = array();
while($row=mysql_fetch_array($mysql_query)) {$array[] = $row;}
}
foreach($array as $arr){
// do work
}
答案 2 :(得分:0)
如果你扩大了你所解释的范围,你可能会得到一个更好的答案。不知道什么是什么,数据是什么,加上最终的目标,那么很难说你应该使用什么样的结构。
在我看来,如果循环中的代码相同,你可以通过使用函数来实现这一点。像这样:
if($something == true)
{
foreach($array as $arr)
{
doWork($arr);
}
}
else
{
while($row = mysql_fetch_array($mysql_query))
{
doWork($row);
}
}
function doWork($arr)
{
//...
}
答案 3 :(得分:-1)
你不能在这样的循环中嵌套循环指令。你需要在IF语句中完全有两个独立的循环。
if($something == true){
foreach($array as $arr){
// do work
}
} else {
while($row = mysql_fetch_array($mysql_query)){
// do work
}
}
答案 4 :(得分:-1)
也许你可以从这个角度来看待。请注意,此代码使用mysql_fetch_assoc()而不是mysql_fetch_array()。尝试这两个函数并使用var_dump()查看结果行。您将看到mysql_fetch_array()的数据量是其两倍。你可能想要那样,但可能不是。
if ($something !== true)
{
$array = array();
while($row = mysql_fetch_assoc($mysql_query_result_resource))
{
$array[] = $row;
}
}
foreach($array as $arr)
{
/* PROCESS */
}