首页 > 解决方案 > 将数组的输出相加时遇到问题

问题描述

我正在尝试添加数组中的所有元素并将它们打印出来。该数组是通过解析其他数组并根据特定标准进行选择而创建的。我得到的最终答案与数学准确性相差甚远,我想知道为什么我会得到这个结果。我也想知道如何正确地做到这一点。我很欣赏给出的任何建议,因为我无法找到特定于我所问内容的答案 - 与我正在搜索的内容相比,我在这里找到的问题和答案通常非常复杂。谢谢。

** 要解析的源数组...

$cities =  array('New York', 'Los Angeles', 'Chicago', 'Houston',
                        'Philadelphia', 'Phoenix','San Antonio', 'San Diego',
                        'Dallas','San Jose');
$states = array('NY', 'CA', 'IL','TX','PA','AZ','TX','CA','TX','CA');

$population = array('8,175,133','3,792,621','2,695,598','2,100,263',
                            '1,526,006','1,445,632','1,327,407','1,307,402',
                            '1,197,816','945,942');

** 我的代码解析数据,输出到数组,添加最终数组的内容...

$p = 0;

for($i = 0, $theCity = count($cities);$i<$theCity; $i++){
   $cityPlace = $cities[$i];
   $province = $states[$i];
   $number = $population[$i];

   if($province === 'CA' ){
      $pops[$p] = $number;
      $p++;
      print "$number<br>"; //to check outcome
   }

}

$a = array_sum($pops);
print $a;  

标签: phparrays

解决方案


您的问题是人口数组编号包含逗号。

PHP 被松散输入并不关心,直到您3,792,621将它们用作数字,例如将它们相加,然后它必须将文本转换为数字,并且在这个过程中,当它看到第一个非数字字符时它会停止,即,

所以你所要做的就是像这样删除逗号

$cities =  array('New York', 'Los Angeles', 'Chicago', 'Houston',
                        'Philadelphia', 'Phoenix','San Antonio', 'San Diego',
                        'Dallas','San Jose');
$states = array('NY', 'CA', 'IL','TX','PA','AZ','TX','CA','TX','CA');

$population = array('8,175,133','3,792,621','2,695,598','2,100,263',
                            '1,526,006','1,445,632','1,327,407','1,307,402',
                            '1,197,816','945,942');


$p = 0;

for($i = 0, $theCity = count($cities);$i<$theCity; $i++){
   $cityPlace = $cities[$i];
   $province = $states[$i];
   $number = $population[$i];

   if($province === 'CA' ){
        // changed line of code to remove commas
        $pops[$p] = str_replace(',','', $number);
        $p++;
        print "$number<br>"; //to check outcome
   }

}

$a = array_sum($pops);
print $a;  

结果:

6045965

推荐阅读