我有一些简单的PHP代码,允许我从最活跃的邮政编码和扩展,最活跃的状态中找到最多注册用户。但是我想找到最活跃的县。问题是在多个州使用相同的县名,因此您不希望将它们一起添加。
$sql_top_zips="SELECT zipcode FROM user_list WHERE TRIM(zipcode) != '' ";
$test_results = mysqli_query( $link , $sql_top_zips );
while ($test_check = mysqli_fetch_array($test_results))
{
$top_zips = $test_check["zipcode"];
$details = $z->get_zip_details($top_zips);
$county[]= $details['county'];
$states[]= $details['state_name'];
}
$top_county = array_count_values($county);
arsort($top_county);
$x=0;
foreach($top_county as $results=>$counter) {
echo $results."<br>";
$x++;
if ($x==5) {break;}
}
因此,使用这个简单的代码,我可以创建前5个县的列表。如果对数组视图使用print_r(),则可以看到带有一些演示数据的Array ( [Madison] => 4 [Davidson] => 3 [Harris] => 2 [Grant] => 1 [Morgan] => 1)
。所以这很好。
但如果有人在杰克逊县,在美国各地发生超过20次,那么你会得到一个错误的数字,因为你实际上是在谈论不同的杰克逊县。
我认为我的解决方案是尝试这个:
$test[]=$details['county']['state_name'];
$testb=array_count_values($test);
arsort($testb);
但是我使用print_r()这样奇怪的东西:Array ( [M] => 6 [D] => 4 [H] => 3 [L] => 2 [U] => 2 [R] => 2 [P] => 1 )
我的目标是列出州名称,如下所示:Jackson TN, Jackson MS
,但最常见的是。我觉得我接近解决方案,但我遗漏了一些明显的东西。
答案 0 :(得分:0)
您的连接不正确。尝试这样的事情......
$test[]=$details['county'] . " " . $details['state_name'];
答案 1 :(得分:0)
你很接近,你需要做的是使用县和州作为数组中的键。这样的事情应该会有所帮助:
$array = array();
while ($test_check = mysqli_fetch_array($test_results)) {
$details = $z->get_zip_details($test_check["zipcode"]);
$key = $detail['county'] . ' ' . $details['state_name'];
//If we've not encountered this county in this state, we initiate it in the array, starting the count at 0.
if(!isset($array[$key])) {
$array[$key] = 0;
}
$array[$key]++;
}
asort($array);
var_dump($array);