问:PHP中的未定义索引我收到第二个'if'语句“未定义索引”的错误。我还应该添加什么?
<?php
$ name = array ('01' => '阿拉巴马州' ,'02' => '阿拉斯加' ,'04' => '亚利桑那州' ,'05' => '阿肯色州' ,'06' => '加利福尼亚” ,“ 08” => “科罗拉多” ,“ 09” => “康涅狄格州” ,“ 10” => “特拉华州” ,“ 11” => “哥伦比亚特区” ,“ 12”=> '佛罗里达' ,'13' => '乔治亚州' ,
'15' => '夏威夷' ,
'16' => '爱达荷州' ,'17' => '伊利诺伊州' ,'18' => '印第安纳州' ,'19' => '爱荷华州' ,'20' => '堪萨斯州' ,'21' => '肯塔基州' ,'22' => '路易斯安那州' ,'23' => '缅因州' ,'24' => '马里兰州' ,'25' =>'Massachusetts' ,'26' => 'Michigan' ,'27' =>
'明尼苏达州' ,
'28' => '密西西比州' ,'29' => '密苏里州' ,'30' => '蒙大拿州' ,'31' => '内布拉斯加州' ,'32' => '内华达州,' 33' => 'New Hampshire' ,'34' => 'New Mexico' ,'35' => 'New York' ,'36' => '北卡罗来纳州' ,'37' => '北达科他州' ,'38' => '俄亥俄州' ,'39' =>
'俄克拉荷马州' ,
'40' => '俄勒冈州' ,'41' => '宾夕法尼亚州' ,'42' => '罗德岛' ,'44' => '南卡罗来纳州' ,'45' => '南达科他州' ,'46' => '田纳西州' ,'47' => '德克萨斯州' ,'48' => '犹他州' ,'49' => '佛蒙特州' ,'50' => '弗吉尼亚州,'51' => '华盛顿州' ,'53' =>
'West Virginia' ,
'54' => 'Wisconsin' ,'55' => 'Wyoming' ,'56' => 'American Samoa' ); $ sum =数组('n1_4' ,'n5_9' ,'n10_19' ,'n20_49' ,'n50_99' ,'n100_249' ,'n250_499' ,'n500_999' ,'n1000' ,'n1000_4' ,'n1000_1' ,' n1000_2' ,'n1000_3' ,'n1000_4' ); $ header =
错误的;
$ arr = array (array ());
$ handle = fopen ('county.csv' ,'r' ); 而((($ current = fgetcsv ($ handle ))!== FALSE ){ if (!$ header ){ $ header = $ current ; 继续; } $ res = array_combine ($ header ,$ current ); $状态=
$ name [ $ res [ 'fipstate' ]];
foreach ($ sum as $ v ){ if (array_key_exists ($ state ,$ arr )){ $ arr [ $ state ] [ $ v ] = $ arr [ $ state ] [ $ v ] + $ res [ $ v ]; } else { $ arr [ $ state ] [ $ v ] = $ res [ $ v ]; }
}
}
fclose ($ handle );
print_r ($ arr );复制代码 ?>
答:我必须承认,要知道没有单独的注释描述/文档就很难确切知道您的代码正在尝试实现的目标。但是,我注意到您正在使用fopen句柄“ $ handle”,即使fopen本身可能已失败。
若要更正此问题,请确保仅在打开流成功的情况下使用句柄。您可以使用if块将所有块括起来;取决于fopen结果的状态。
<?php
$ name = array (
'01' => '阿拉巴马州' ,'02' => '阿拉斯加' ,'04' => '亚利桑那州' ,'05' => '阿肯色州' ,'06' => '加利福尼亚” ,“ 08” => “科罗拉多” ,“ 09” => “康涅狄格州” ,“ 10” => “特拉华州” ,“ 11” => “哥伦比亚特区” ,“ 12”=> '佛罗里达' ,'13' => '乔治亚州' ,
'15' => '夏威夷' ,
'16' => '爱达荷州' ,'17' => '伊利诺伊州' ,'18' => '印第安纳州' ,'19' => '爱荷华州' ,'20' => '堪萨斯州' ,'21' => '肯塔基州' ,'22' => '路易斯安那州' ,'23' => '缅因州' ,'24' => '马里兰州' ,'25' =>'Massachusetts' ,'26' => 'Michigan' ,'27' =>
'明尼苏达州' ,
'28' => '密西西比州' ,'29' => '密苏里州' ,'30' => '蒙大拿州' ,'31' => '内布拉斯加州' ,'32' => '内华达州,' 33' => 'New Hampshire' ,'34' => 'New Mexico' ,'35' => 'New York' ,'36' => '北卡罗来纳州' ,'37' => '北达科他州' ,'38' => '俄亥俄州' ,'39' =>
'俄克拉荷马州' ,
'40' => '俄勒冈州' ,'41' => '宾夕法尼亚州' ,'42' => '罗德岛' ,'44' => '南卡罗来纳州' ,'45' => '南达科他州' ,'46' => '田纳西州' ,'47' => '德克萨斯州' ,'48' => '犹他州' ,'49' => '佛蒙特州' ,'50' => '弗吉尼亚州,'51' => '华盛顿州' ,'53' =>
'West Virginia' ,
'54' => 'Wisconsin' ,'55' => 'Wyoming' ,'56' => 'American Samoa' ); $ sum =数组('n1_4' ,'n5_9' ,'n10_19' ,'n20_49' ,'n50_99' ,'n100_249' ,'n250_499' ,'n500_999' ,'n1000' ,'n1000_4' ,'n1000_1' ,' n1000_2' ,'n1000_3' ,'n1000_4' ); $ header =
错误的;
$ arr = array (array ());
if ($ handle = fopen ('county.csv' ,'r' )){ while (($ current = fgetcsv ($ handle ,1000 ,',' ))!== FALSE ){ if (!$ header ){ $ header = $ current ; 继续; } $ res = array_combine ($ header
,$ current );
$ state = $ name [ $ res [ 'fipstate' ]]; foreach ($ sum as $ v ){ if (array_key_exists ($ state ,$ arr )){ $ arr [ $ state ] [ $ v ] = $ arr [ $ state ] [ $ v ] + $ res [ $ v ]; } else { $ arr [ $ state ] [ $ v ]
= $ res [ $ v ];
} } } fclose ($ handle ); } print_r ($ arr ); ?>