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 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥15 c++头文件不能识别CDialog