douzhanbai9526 2018-02-07 13:32
浏览 492
已采纳

循环使用foreach并创建数组

I am trying to loop through and Array of unique zones in a property data base and then create an array for the size, value and building sizes for each of those zones.

My problem is that I can create the array, but since each foreach that is loop through has the array with the same name, so the arrays totaling not just the amount with in that zone, but the amount of previously looped through zones.

For example: Zone A should total 100 Zone B should total 200

But the Code is returning: Zone A totals 100 Zone B totals 300 (100+200)

The issue likely falls on how the arrays, $Value, $ResSQFT and $ComSQFT, end up having the same name in each foreach loop, but I know how to rename them on the fly.

$Zones = "SELECT DISTINCT(ZONING_COD) FROM `ClevelandParcels`" ;

$ZonesStatus = mysqli_query($Connection, $Zones) ;
if(!$ZonesStatus)
{
  die('Could not get data: ' . mysqli_error());
}
while($row = mysqli_fetch_array($ZonesStatus))
{

$UniqueZones[] = array($row['ZONING_COD']);

}

echo "Zone,ParcelCount,ParcelValue,BuilingSqft,ResLivableArea,ComLeaseableArea<br>";

foreach ( $UniqueZones as $varZ ) {
  $ZoneParcelCount = "SELECT COUNT(*) FROM `ClevelandParcels` WHERE ZONING_COD =     '".$varZ[0]."'" ;
  $ZoneParcelCountStatus = mysqli_query($Connection, $ZoneParcelCount) ;
  $total = mysqli_fetch_row($ZoneParcelCountStatus);

  echo $varZ[0].",".$total[0];
mysqli_free_result($ZoneParcelCountStatus);

  $ZoneParcels = "SELECT * FROM `ClevelandParcels` WHERE ZONING_COD =     '".$varZ[0]."'" ;
  $ZoneParcelsStatus = mysqli_query($Connection, $ZoneParcels) ;
  if(!$ZoneParcelsStatus)
{
  die('Could not get data: ' . mysqli_error());
}

while ($row = mysqli_fetch_assoc($ZoneParcelsStatus)){
  $Value[] = $row['GROSS_CE_2'];
  $ResSqft[] = $row['TOTAL_RES_'];
  $ComSqft[] = $row['TOTAL_COM_'];
  }
    echo ",        $".array_sum($Value).",".array_sum($ResSqft).",".array_sum($ComSqft)."<br>";
    mysqli_free_result($ZoneParcelsStatus);

}
  • 写回答

2条回答 默认 最新

  • duanli3277 2018-02-07 13:36
    关注

    You have to reset your arrays before to add data in them and to compute the sum :

    $Value=[];
    $ResSqft=[];
    $ComSqft=[];
    while ($row = mysqli_fetch_assoc($ZoneParcelsStatus)){
        $Value[] = $row['GROSS_CE_2'];
        $ResSqft[] = $row['TOTAL_RES_'];
        $ComSqft[] = $row['TOTAL_COM_'];
    }
    

    In your code, you appends each time the values in each arrays, so your values are cumulated.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 uniapp实现如下图的图表功能
  • ¥15 u-subsection如何修改相邻两个节点样式
  • ¥30 vs2010开发 WFP(windows filtering platform)
  • ¥15 服务端控制goose报文控制块的发布问题
  • ¥15 学习指导与未来导向啊
  • ¥15 求多普勒频移瞬时表达式
  • ¥15 如果要做一个老年人平板有哪些需求
  • ¥15 k8s生产配置推荐配置及部署方案
  • ¥15 matlab提取运动物体的坐标
  • ¥15 人大金仓下载,有人知道怎么解决吗