以下の php コードは、データベースに保存されている IP の国の場所を表示し、それを HTML テーブルに出力します。そのままで、個々の IP ごとに国コードの長いリストが作成されます。
例えば...
US
US
MX
US
私がやりたいのは、個々のアイテムの長いリストを作成するのではなく、アイテムが配列に表示される回数を表示することです。上記の例を使用すると...
国の頻度
米国 3
MX 1
これをどのように実装しますか?これが完全なコードです...
require_once("geoip.inc");
$gi = geoip_open("GeoIP.dat",GEOIP_STANDARD);
include_once($_SERVER['DOCUMENT_ROOT'] . 'connect.php');
/* Performing SQL query */
$data = mysql_query("SELECT * FROM the_ips LIMIT 100")
or die(mysql_error());
echo "<table>";
echo "<td><strong>Country</strong></td><td><strong>Frequency</strong></td></tr>";
while($info = mysql_fetch_array( $data ))
{
$ip = $info['ip_address'];
$country_code = geoip_country_code_by_addr($gi, $ip);
$countrylist = array($country_code);
$frequency = array_count_values($countrylist);
echo "<tr><td style='width: 100px;'>".$country_code."</td><td style='width: 100px;'>".$frequency."</td></tr>";
}
echo "</table>";
geoip_close($gi);
重複する「国」値を含む行を割り当て$frequency
て削除する必要がありますが、これを行う方法がわかりません。現状では、数値 (つまり、US 3) を期待していたときに、$frequency は "Array" を返します。