Php 一起使用foreach和while循环
我有一个数组,其中包含一些值,如Php 一起使用foreach和while循环,php,Php,我有一个数组,其中包含一些值,如 $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 uni
$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 while循环时,它只将$year\u值的第一个值取为$vals[5],我想在while中对数组$year\u值的每个值进行计算
如何纠正
重复出现在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
我想你只需要存储你所有的数据,这样你就可以重用它了
$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);
}
}
我想你只需要存储你所有的数据,这样你就可以重用它了
$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);
}
}
只需将这些陈述颠倒过来:
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);
}
}
只需将这些陈述颠倒过来:
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);
}
}
mysql_fetch_row在获取所有行后将返回false。要重用它,您应该将它们存储在一个变量中,或者您可以切换两个周期mysql\u fetch\u一旦所有行都被提取出来,row将返回false。要重用它,您应该将它们存储在一个变量中,或者您可以切换两个周期我尝试过,但在这种情况下,查询结果会对数组$year\u values中的每个值重复。我尝试过,但在这种情况下,查询结果会对数组$year\u values中的每个值重复。抱歉,将您与作者混淆。。。我现在才看到你的问题,我会编辑。我尝试了建议的解决方案,但结果仍然不准确,重复发生,最后我的问题是固定的解决方案是:foreach($year_值为$key=>$vals){$w=$rows[$key][2];$e=$rows[$key][0];$r=$rows[$key][1];$tt=$rows[$key][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($eoq*$e*$w)/2);$o=round($r*$vals[5])/$eoq])啊,对不起,把你和作者搞混了…我现在才看到你的问题,我会编辑。我尝试了建议的解决方案,但结果仍然不准确,重复发生,最后我的问题是固定的解决方案是:foreach($year_值为$key=>$vals){$w=$rows[$key][2]$e=$rows[$key][0];$r=$rows[$key][1];$tt=$rows[$key][3];$eo=sqrt(2*$vals[5]*$r/($e*$w));$eoq=round($eo,1);$ro=$vals[5]/360;$rop=round($ro*$tt);$op=round($op[5]/$eoq,1);$cc=round(89/$op);$h=round($eoq*$e*$w)/2);$rop=round($5);$eoq=round($5);$eoq]$VAL[5]中的每个值现在都在重复$VAL[5]中的每个值现在正在重复。您需要提供有关您试图实现的目标的更多详细信息。该代码的意义是什么?它根本不使用该计算结果。数组年份值包含以下值:array([0]=>2013[1]=>1[2]=>205[3]=>4]=>266[5] =>199)数组([0]=>2013[1]=>1[2]=>1748[3]=>4]=>299[5]=>1698)数组([0]=>2013[1]=>1[2]=>15[3]=>4]=>170[5]=>15)数组([0]=>2013[1]=>1[2]=>1000[3]=>4]=>31[5]=>971)数组([0]=>2013[1]=>1[2]=>975]=>975[4]=>117]我想使用所有第五个索引值进行公式计算,比如:$eo=sqrt(2*$VAL[5]*$r/($e*$w));并最终显示结果您需要提供有关您试图实现的目标的更多详细信息。该代码的意义是什么?它根本不使用该计算的结果。数组年份值包含以下值:array([0]=>2013[1]=>1[2]=>205[3]=>[4]=>266[5]=>199)阵列([0]=>2013[1]=>1[2]=>1748[3]=>[4]=>299[5]=>1698)阵列([0]=>2013[1]=>1[2]=>15[3]=>1[4]=>170[5]=>15)阵列([0]=>2013[1]=>1[2]=>1000[3]=>1[4]=>31[5]=>971)阵列([0]=>2013[1]=>1[2]=>1[4]=>975]=>我想使用所有第五个索引值进行公式计算,比如:$eo=sqrt(2*$VAL[5]*$r/($e*$w));最后显示结果