我有一个数组year_values包含一些值,如
$year_values = array();
foreach($year_strings as $str) {
$year_values[] = explode(",", $str);
}
然后我应用查询从数据库中提取一些值
$sql = "SELECT inventory.holdingcost as holdingcost,
inventory.ordercost as ordercost, inventory.unitprice as unitprice,
inventory.lead_time as lead_time, items.id as iid
FROM inventory, items
WHERE inventory.item_name = items.item_name";
mysql_error();
$result = mysql_query($sql);
foreach($year_values as $vals) {
while ($row = mysql_fetch_row($result)) {
$w = $row[2];
$e = $row[0];
$r = $row[1];
$tt = $row[3];
$eo = sqrt(2 * $vals[5] * $r / ($e * $w));
$eoq = round($eo, 1);
$ro = $vals[5] / 360;
$rop = round($ro * $tt);
$op = round($vals[5] / $eoq, 1);
$cc = round(89 / $op);
$h = round((($eoq * $e * $w) / 2), 2);
$o = round((($r * $vals[5]) / $eoq), 2);
$z = round($h + $o, 2);
}
}
当我在循环中使用foreach时,它只需将$year_values
的第一个值作为$ vals [5],我想在内部进行计算,同时为数组$year_values
的每个值。
如何纠正?
重复发生在value1,即$ val [5]目前:
Value1 Value 2 Value 3
199 202 0.25
199 205 0.25
199 210 0.25
199 230 0.25
1698 202 0.25
1698 205 0.25
1698 210 0.25
1698 230 0.25
我希望值显示为
Value1 Value 2 Value 3
199 202 0.25
1698 205 0.25
15 210 0.25
971 230 0.25
答案 0 :(得分:3)
我猜您只需存储所有数据,以便重复使用。
$result = mysql_query($sql);
$rows = array() ;
while ($row = mysql_fetch_row($result)){
$rows[] = $row ;
}
foreach($year_values as $vals) {
foreach($rows as $row){
$w = $row[2];
$e = $row[0];
$r = $row[1];
$tt = $row[3];
$eo = sqrt(2 * $vals[5] * $r / ($e * $w));
$eoq = round($eo, 1);
$ro = $vals[5] / 360;
$rop = round($ro * $tt);
$op = round($vals[5] / $eoq, 1);
$cc = round(89 / $op);
$h = round((($eoq * $e * $w) / 2), 2);
$o = round((($r * $vals[5]) / $eoq), 2);
$z = round($h + $o, 2);
}
}
答案 1 :(得分:2)
简单地颠倒声明:
while ($row = mysql_fetch_row($result)) {
foreach($year_values as $vals) {
$w = $row[2];
$e = $row[0];
$r = $row[1];
$tt = $row[3];
$eo = sqrt(2 * $vals[5] * $r / ($e * $w));
$eoq = round($eo, 1);
$ro = $vals[5] / 360;
$rop = round($ro * $tt);
$op = round($vals[5] / $eoq, 1);
$cc = round(89 / $op);
$h = round((($eoq * $e * $w) / 2), 2);
$o = round((($r * $vals[5]) / $eoq), 2);
$z = round($h + $o, 2);
}
}
答案 2 :(得分:1)
mysql_fetch_row将返回false。要重复使用它,您应该将它们存储在变量(like the response made by Jari)中,或者您可以切换两个周期(see imulsion's answer)