0

次のようなものを使用して、MySQL while ループを foreach ループにリンクしようとしています。

if($something == true){
  foreach($array as $arr){
} else {
  while($row = mysql_fetch_array($mysql_query)){
}
  // loop instructions
}

それはとても間違っているように見えますが、私が何をしようとしているのか分かりますか?.. $somethingtrue の場合は配列からデータを取得し、それ以外の場合はデータベースからデータを取得します

別の解決策のアイデアがあり、配列を手動でどのように機能させるかを一致させて、次のようなものだけで$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)){
...

それはそれを行う2番目の方法ですが、最初の配列が通常であるため、それも間違っているように見えます。その通常の配列をどのようmysql_queryに構築するかを一致させて、whileループに適合できるようにしたい

PS :ループ命令の記述を繰り返したくありません。上記のように、両方とも 1 つだけで動作するようにしたいです。

4

5 に答える 5

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);
    }
}
于 2012-12-26T14:09:20.820 に答える
1

ここでの他の答えは問題ありませんが、それが$array有効な配列であることを確認するためだけに役立つでしょうsomething...どうですか

if (!something){
    $array = array();
    while($row=mysql_fetch_array($mysql_query)) {$array[] = $row;}
}

foreach($array as $arr){
   // do work
}
于 2012-12-26T14:10:25.900 に答える
0

あなたが説明したことの範囲を少し広げれば、おそらくより良い答えが得られるでしょう. 何かが何であるか、データが何であるか、さらに最終的な目的を知らなければ、どのような構造を使用すべきかを判断するのは困難です。

ループ内のコードが同じであれば、関数を使用するだけでこれを達成できるように思えます。このような:

if($something == true)
{
    foreach($array as $arr)
    {
        doWork($arr);
    }
}
else
{
     while($row = mysql_fetch_array($mysql_query))
     {
         doWork($row);
     }
}

function doWork($arr)
{
 //...
}
于 2012-12-26T14:12:15.143 に答える
-1

たぶん、あなたはこの観点から見ることができます。また、このコードではmysql_fetch_array()ではなくmysql_fetch_assoc()を使用していることに注意してください。両方の関数を試して、var_dump()で結果の行を確認してください。mysql_fetch_array()には2倍のデータがあることがわかります。あなたはそれを望むかもしれませんが、おそらくそうではありません。

if ($something !== true)
{
    $array = array();
    while($row = mysql_fetch_assoc($mysql_query_result_resource))
    {
        $array[] = $row;
    }
}
foreach($array as $arr)
{
    /* PROCESS */
}
于 2012-12-26T14:17:30.047 に答える
-1

このように、ループ命令をループ内にネストすることはできません。IF ステートメント内に 2 つの別個のループを完全に含める必要があります。

if($something == true){
  foreach($array as $arr){
     // do work
  }
} else {
  while($row = mysql_fetch_array($mysql_query)){
    // do work
  }
}
于 2012-12-26T14:07:17.513 に答える