我有几行代码,但无法找到正确使用它的正确方法。
$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循环。
我的问题是如何在循环中“发送”它们?
答案 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循环中做同样的事情