[英]php numeric array processing
我正在尝试从文本框中发布的数据处理数组。
我已经编写了以下代码来修剪每一条新线,除了一件事,我几乎所有东西都完美无缺。 我相信我需要通过这个GeoIP函数迭代我的数值数组:
$record = geoip_record_by_addr($gi,$value);
,但它只处理数组中的最后一个IP,而不是整个事物。
我的var_dump:string(12)“65.87.12.213”string(12)“13.15.200.36”
$gi = geoip_open("/tmp/GeoIPCity.dat",GEOIP_STANDARD);
$iips = explode("\n", $_POST["ip"]);
$iiips=array_map('trim',$iips);
foreach($iiips as $key => $value) {
$record = geoip_record_by_addr($gi,$value);
}
print $record->city . "\n";
print $record->region . " " . "\n";
print $record->country_name . "\n";
$record1 = $record->city . " " . $record->region . " " . $record->country_name;
var_dump($record1);
有没有人可以请求帮助?
在foreach
循环中,你总是覆盖$record
变量,所以最后你有最后一个变量。
将所有记录存储到另一个数组中,你应该没问题。
所以这只是一个或多或少的错误。
$records = array();
foreach ($iiips as $key=>$value) {
$records[] = geoip_record_by_addr($gi, $value);
}
foreach ($records as $record) {
echo $record->city, "\n",
$record->region, "\n",
$record->country_name, "\n";
$record_string = $record->city . " " . $record->region . " " . $record->country_name;
var_dump($record_string);
}
而不是$record = geoip_record_by_addr($gi,$value);
, 做这个:
$record = array();
foreach($iiips as $value) { // key isnt needed.
array_push($record, geoip_record_by_addr($gi,$value));
}
然后您可以按预期使用$record
的内容。 在任何循环中重新分配变量将每次更改该特定变量的值。 除非你告诉它,否则PHP不知道你正在使用数组。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.