繁体   English   中英

php数组处理

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM