循环的PHP数组
我想显示循环计算的循环的PHP数组,php,Php,我想显示循环计算的中的数组值$result[]。但是,它在页面上没有显示任何内容。下面的代码有什么错误吗 $sql= "SELECT * FROM items where itemID =3 "; $result1= mysql_query($sql) or die (mysql_error()); while ($row= mysql_fetch_array($result1)){ $quantity[] = $row ['quantity']; $month[] = $r
中的数组值$result[]
。但是,它在页面上没有显示任何内容。下面的代码有什么错误吗
$sql= "SELECT * FROM items where itemID =3 ";
$result1= mysql_query($sql) or die (mysql_error());
while ($row= mysql_fetch_array($result1)){
$quantity[] = $row ['quantity'];
$month[] = $row ['month'];
}
$alpha = 0.3;
for($i = 1; $i > 12; $i++){
$result[$i] = ($quantity[$i] - $result[$i-1]) * $alpha + $result[$i-1];
}
foreach ($result as $key => $value ){
echo "$value";
}
您的for循环有一个错误。你有
for($i = 1; $i > 12; $i++)
但应该是这样
for($i = 1; $i < 12; $i++)
($i=1;$i<12;$i++)的
逻辑中有一个明显的缺陷。您尝试从$quantity获取$i索引。但是,您不能确定$quantity是否有此索引。
假设itemId不是主键,我会这样做:
$sql = "SELECT * FROM `items` WHERE `itemID` = 3";
$result1= mysql_query($sql) or die (mysql_error());
while ($row= mysql_fetch_assoc($result1)){
$quantity[] = $row ['quantity'];
}
$alpha = 0.3;
$i = 1
foreach ($quantity as $elem) {
if ($i >= 12)
break;
$result[$i] = ($elem - $result[$i-1]) * $alpha + $result[$i-1];
$i++
}
foreach ($result as $value ){
echo $value;
}
这并不是您问题的直接答案,但有几件事与您查询和处理数据的方式有关:
您的SELECT
语句没有指定特定顺序。由于不保留记录的顺序,您可以使记录的顺序不正确,从而得到无效的计算。使用orderby
(例如orderby month
)或使用月份值并从数组中精确提取上个月的值(如果是您在代码中所做的)
您当前的代码依赖于这样一个事实,即来自DB的resultset将包含(至少)12条记录。如果出于某种原因,它将生成较少的记录,则
的循环将停止
从问题中的信息来看,这是不确定的,但在查询中可能需要一年,除非表中只包含一年的记录
现在,您可以使用这样的查询在DB端计算整个过程
选择i.month,
合并((i.数量-p.数量)*0.3+p.数量,0)值
从我离开的项目加入项目p
关于i.itemID=p.itemID
i.`year`=p.`year`
i.month=p.month+1
其中i.itemID=3
和i.‘年份`=2013年
按月订购
这是假设(我不确定)您实际上需要读取上个月的数量值进行计算,并且month
列是整数类型的我不想问,但是$result
是否已初始化?itemId看起来像主键。如果是这种情况,则不需要第一个while
或数组。永远不满足$i>12
条件。我认为您应该使用$I<12
或$I,在这种情况下,我认为您应该使用mysql\u fetch\u assoc,而不是mysql\u fetch\u数组。数据库中记录的排序器不保留。您如何确保您的选择以正确的顺序为您提供了月份,并且您的计算将有效?我知道你需要怎么使用orderby
Haha!我在打同样的东西!通读代码,但没有把它捡起来。我只是在滚动过去,并没有真正看的时候才看到它。当我们在这里的时候,让我们学习一些东西。当PHP看到这样的情况时,它会做什么?厌恶地耸耸肩然后继续?生成警告?@L_Holcombe虽然它是一个不正确的循环构造函数,但根据PHP的标准,它基本上是有效的,因此它会将$i
设置为1
的值,测试$i>12
,得出结论认为它不是,并悄悄地绕过for循环。