使用mysql_fetch_assoc继续

时间:2011-11-22 10:56:32

标签: php arrays loops while-loop continue

我有几行代码,但无法找到正确使用它的正确方法。

$cc = 0;
$tt = 50;

while ($row = mysql_fetch_assoc($result)) {

//building array with values from DB.

    if (++$cc < $tt)
        continue;

    for ($i = 0; $i < $tt; $i++) {

    //Work with the array

    }
}

假设我在DB中有133个结果。它将获得前50 - 在for循环中执行某些操作,然后再执行50次,将再次通过for循环并停止。 最后33个结果将不受影响。 它会得到它们,但是因为无法达到50将停止并且它们不会通过for循环。

我的问题是如何在循环中“发送”它们?

4 个答案:

答案 0 :(得分:2)

在函数中移动for循环并在while循环后调用它:

$cc = 0;
$tt = 50;
while ($row = mysql_fetch_assoc($result)) {

//building array with values from DB.

    if (++$cc < $tt) continue;

    work_with_array($array);
}
if($cc) work_with_array($array);

function work_with_array($array) {
    for ($i = 0; $i < count($array); $i++) {
        //Work with the array
    }
}

答案 1 :(得分:1)

试试这个:

$i = 0
while ($row = mysql_fetch_assoc($result)):
  if($i < 50):
   //Code when $i is less than 50
   //Insert code here

  elseif($i > 50 && $i < 100):
   //Code when $i is more than 50 but less than 100
   //Insert code here

  elseif($i > 100):
   //Code when $i is more than 100
   //Insert code here

  endif;
 $i++;
endwhile;

所以所有结果都经过这个循环。如果$ i小于50(或者结果小于50)则执行一些代码,或者如果$ i大于50但小于100,则执行一些不同的代码。最后,如果$ i超过100,则执行其他一些代码。

你明白吗?

答案 2 :(得分:0)

你可以尝试:

$i = 0
while ($row = mysql_fetch_assoc($result) && $i < 100):
  if($i < 50):
   //Code when $i is less than 50
  else:
   //Code more than or equal to 50
  endif;
 $i++;

endwhile;

答案 3 :(得分:0)

循环中的所有继续似乎都是不必要的。如果您只是尝试处理整个结果集并以块的形式执行某些操作,则可以执行此操作

$cc = 0;
$tt = 50;
$result_array = array();

// this will chunk your array into blocks
while ($row = mysql_fetch_assoc($result)) {

    //building array with values from DB.
    $result_array[intval($cc++/$tt)] = $row;

}

// at this point you should have result_array with indexes:0,1,2 and have subarrays with 50, 50, 33 entries each.


foreach ($result_array as $k=>$sub_array) {
    //Work with your sub array
    foreach ($sub_array as $one_row)
    {
       // do something with the row
    }
}

我确实同意@ Col.Shrapnel。为什么要在while循环中创建另一个数组,只是为了一次一行地遍历该数组?如果你一次发送一批数据(比如批量插入到数据库中,确实如此)是有意义的,但再次循环似乎很奇怪。为什么你不能在while循环中做同样的事情