下面的php代码显示存储在数据库中的IP的国家/地区位置,并将其输出到HTML表格中。因此,它为每个IP创建了一长串国家/地区代码。
例如......
US
US
MX
US
我想要做的是,而不是创建每个单独项目的长列表,显示项目在数组中显示的次数。使用上面的例子......
国家/地区频率
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”。
答案 0 :(得分:0)
您可以使用array_count_values()
函数
想象一下这个简单的例子:
$colors = array('red', 'green', 'red', 'blue');
var_dump(array_count_values($colors));
是什么让你:
array(3) {
'red' =>
int(2)
'green' =>
int(1)
'blue' =>
int(1)
}