Ссылаясь на предыдущее значение в цикле foreach - PullRequest
0 голосов
/ 17 апреля 2020

Я не совсем уверен, как это сказать. Начну с того, что покажу вам код / ​​API

$ips = array("IP1", "IP2");
        foreach ($ips as $ip) {
            $location = get_geolocation($apiKey, $ip);
            $decodedLocation = json_decode($location, true);

            echo "<tr>";
            echo "<td>".$decodedLocation['ip']."</td>";
            echo "<td>".$decodedLocation['continent_name']." (".$decodedLocation['continent_code'].")</td>";
            echo "<td>".$decodedLocation['country_name']." (".$decodedLocation['country_code2'].")</td>";
            echo "<td>".$decodedLocation['organization']."</td>";
            echo "<td>".$decodedLocation['isp']."</td>";
            echo "<td>".$decodedLocation['languages']."</td>";
            if($decodedLocation['is_eu'] == true) {
                echo "<td>Yes</td>";
            } else {
                echo "<td>No</td>";
            }
            echo "<td>".$decodedLocation['currency']['name']."</td>";
            echo "<td>".$decodedLocation['time_zone']['name']."</td>";
            echo "</tr>";
        }

Я хочу сравнить информацию IP1 с IP2. Например, я хочу посмотреть, соответствует ли название страны IP1 названию страны IP2 после l oop.

Спасибо.

Ответы [ 2 ]

0 голосов
/ 17 апреля 2020

Если у вас есть 2 или более IP-адресов, то лучше хранить их в массиве с именем $decodedLocations, который

в качестве пары значений ключ => имеет "ip" => "decodedLocation of ip" , Затем вы можете выполнить любое сравнение в новом массиве. Для этого просто добавьте $decodedLocations["$ip"]=$decodedLocation; к вашему foreach l oop, как показано ниже:

$ips = array("IP1", "IP2");
foreach ($ips as $ip) {
  $location = get_geolocation($apiKey, $ip);
  $decodedLocation = json_decode($location, true);
  $decodedLocations["$ip"]=$decodedLocation;
  echo "<tr>";
  echo "<td>".$decodedLocation['ip']."</td>";
  echo "<td>".$decodedLocation['continent_name']." (".$decodedLocation['continent_code'].")</td>";
  echo "<td>".$decodedLocation['country_name']." (".$decodedLocation['country_code2'].")</td>";
  echo "<td>".$decodedLocation['organization']."</td>";
  echo "<td>".$decodedLocation['isp']."</td>";
  echo "<td>".$decodedLocation['languages']."</td>";
  if($decodedLocation['is_eu'] == true) {
    echo "<td>Yes</td>";
  } else {
    echo "<td>No</td>";
  }
  echo "<td>".$decodedLocation['currency']['name']."</td>";
  echo "<td>".$decodedLocation['time_zone']['name']."</td>";
  echo "</tr>";
}

Теперь вы можете сравнивать любые значения, как хотите, например,

if ($decodedLocations[$ips[0]]['country_name'] == $decodedLocations[$ips[1]]['country_name']) {
  // Code ...
}
0 голосов
/ 17 апреля 2020

Сохранить последнее значение в переменной:

$ips = [ 'ip1', 'ip2' ];
$lastIp = null;

foreach ($ips as $ip) {
    // Check if last ip is filled (on first iteration it will be null)
    if ($lastIp) {
        // Your logic using lastIp here
    }

    $lastIp = $ip;
}
...