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

循环使用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);

}

图片转代码服务由CSDN问答提供 功能建议

我试图遍历属性数据库中的唯一区域数组,然后为该大小创建一个数组 每个区域的值,值和构建大小。

我的问题是我可以创建数组,但由于每个循环的foreach都有相同名称的数组,所以 数组总计不仅仅是该区域的数量,而是先前通过区域循环的数量。

例如: Zone A应该总计100 区域B应该总计200

但是代码正在返回: 区域A总计100 区域B总计300(100 + 200)

问题可能落在阵列的数值上,$ Value ,$ ResSQFT和$ ComSQFT,最终在每个foreach循环中都有相同的名称,但我知道如何在运行中重命名它们。

  $ Zones =“SELECT DISTINCT(  ZONING_COD)FROM`ClevelandParcels`“; 
 
 $ ZonesStatus = mysqli_query($ Connection,$ Zones); 
if(!$ ZonesStatus)
 {
 die('无法获取数据:'。mysqli_error())  ; 
} 
而($ row = mysqli_fetch_array($ ZonesStatus))
 {
 
 $ UniqueZones [] = array($ row ['ZONING_COD']); 
 
} 
 
echo“Zone  ,ParcelCount,ParcelValue,BuilingSqft,ResLivableArea,ComLeaseableArea&lt; br&gt;“; 
 
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('无法获取数据:'。  mysqli_error()); 
} 
 
而($ 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)。“&lt; br&gt;”; 
 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.

    点赞 打赏 评论
  • dongzhi9192 2018-02-07 15:40
    $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());
    }
    unset($Value);
    unset($ResSqft);
    unset($ComSqft);
    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);
    
    }
    
    点赞 打赏 评论

相关推荐 更多相似问题