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 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败
  • ¥100 支付宝网页转账系统不识别账号
  • ¥15 基于单片机的靶位控制系统
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测