2017-08-08 340 views
2

我正在尝试从输入帖子发布的数据处理数组ip。为了将它转换为纬度我使用下面的代码经度,我无法将数组转换为经度和纬度

这是我的CI库:

<?php defined('BASEPATH') OR exit('No direct script access allowed'); 
    include APPPATH . 'libraries/GeoIP/src/geoipcity.inc'; 

    class GeoIp{ 

     public function info($ip){ 
      $gi = geoip_open(APPPATH . 'libraries/GeoIp/data/GeoLiteCity.dat', GEOIP_STANDARD); 
      $record = geoip_record_by_addr($gi, $ip); 
      geoip_close($gi); 
      return $record; 
     } 

     public function get($ip){ 
      $gi = geoip_open(APPPATH . 'libraries/GeoIp/data/GeoLiteCity.dat', GEOIP_STANDARD); 
      $records = array(); 
      $ips = is_array($ip); 
      foreach ($ips as $key=>$value) { 
       $records[] = geoip_record_by_addr($gi, $value); 
      } 

      foreach ($records as $record) { 
      $record_string = $record->longitude . "," . $record->latitude; 
      geoip_close($gi); 
      return $record_string; 
      } 
     } 

    } 

这我的控制器:

public function iplat(){ 
    $this->load->library('geoip'); 
    $record = $this->geoip->get($this->input->post('ip')); 

    echo json_encode($record); 


} 

该代码总是返回null

+0

2的问题在我看来: - 1'$ GI = geoip_open(APPPATH '库/ GEOIP /数据/ GeoLiteCity.dat',GEOIP_STANDARD); “我认为路径问题在那里。 '$ this-> load-> library('geoip');'你需要知道它工作正常与否。检查你的错误日志文件(我希望codeignitor产生错误日志文件) –

回答

1

我马上看到的一个问题是您的代码

 $ips = is_array($ip); 
     foreach ($ips as $key=>$value) { 
      $records[] = geoip_record_by_addr($gi, $value); 
     } 

怎么一回事,因为你已经分配给is_array($ip)$ips$ips现在是一个布尔值,而不是和数组。所以你不能在它上面运行一个循环。也许你的意思运行的$ip这样的循环:

if(is_array($id)) 
{ 
    foreach ($ip as $key=>$value) 
    { 
     $records[] = geoip_record_by_addr($gi, $value); 
    } 
} 
+0

不工作有人可以帮助 –