Php 从MySQLi查询创建用于显示的数组

Php 从MySQLi查询创建用于显示的数组,php,mysqli,Php,Mysqli,这是先前已解决问题的继续。我有以下查询,提取每个国家的国家和计数 $query = mysqli_query($con, "SELECT COUNT(id) AS countCnt, country FROM users GROUP BY country ORDER BY COUNT(id) DESC"); 我试图将它们放入数组中,如下所示,以便将它们作为变量分配: $country_text = ['USA', 'Canada', 'England', 'Australia', 'New Z

这是先前已解决问题的继续。我有以下查询,提取每个国家的国家和计数

$query = mysqli_query($con, "SELECT COUNT(id) AS countCnt, country FROM users GROUP BY country ORDER BY COUNT(id) DESC");
我试图将它们放入数组中,如下所示,以便将它们作为变量分配:

$country_text = ['USA', 'Canada', 'England', 'Australia', 'New Zealand', etc...];
$country_count = [15, 10, 5, 3, 2, etc...];
一旦分配了这些,我希望按如下方式显示它们:

    for($i = 0; $i < 195; $i++) {

    echo "['{$country_text[$i]}'" . "," . "{$country_count[$i]}],";
}
($i=0;$i<195;$i++)的
{
回声“{$country_text[$i]}.”,“{$country_count[$i]}]”;
}

这三个代码剪接在一起就是它的整体。我面临的挑战是创建数组&将它们作为变量分配

您可以通过以下方式实现:

//do a query and run
$query = mysqli_query($con, "SELECT COUNT(id) AS countCnt, country FROM users GROUP BY country ORDER BY COUNT(id) DESC");

$countries = [];

//iterate through values from query
while($row = mysqli_fetch_assoc($query)) {
    $country = $row['country'];
    $countryCount = $row['countCnt'];
    //create and array with data, formatted as ['USA' => '15', 'Canada' => '10' , ...]
    $countries[$country] = $countryCount;
}

//Create both arrays
$country_text = array_keys($countries);
$country_count = array_values($countries);
或者,与其做

for($i = 0; $i < 195; $i++) {
    echo "['{$country_text[$i]}'" . "," . "{$country_count[$i]}],";
}

您需要的格式称为
json
不要发明轮子,一切都已经发明了:

$query = mysqli_query($con, "SELECT COUNT(id) AS countCnt, country FROM users GROUP BY country ORDER BY COUNT(id) DESC");

$countries = [];
while($row = mysqli_fetch_assoc($query)) {
    $countries[] = [$row['country'], $row['countCnt']];
}
echo json_encode($countries);

嗯,我没有收到错误,但是地理地图没有显示任何东西。基本上,这是在for each echo“['{$country_text[$i]}'”、“{$country_count[$i]}]、”;替换API['South America',900],'Canada',550]等中的此默认值。如果我将($I=0;$I<6;$I++)限制为如果此国家/地区数组中有6个值,则此for循环在195中如何工作?这将是一个好主意,如果您使用另一个表的国家,您将保存所有国家,然后离开加入这个与您的用户表。希望你能得到你的嘲笑是的,谢谢@Mithu CN,我现在就要实现这一点了。如果我的代码要考虑其他国家/地区的添加,则需要采用不同的结构。我列出了国家/地区,但计数结果为空。因为字段名是
countCnt
,而不是
countryCnt
$query = mysqli_query($con, "SELECT COUNT(id) AS countCnt, country FROM users GROUP BY country ORDER BY COUNT(id) DESC");

$countries = [];
while($row = mysqli_fetch_assoc($query)) {
    $countries[] = [$row['country'], $row['countCnt']];
}
echo json_encode($countries);