PHP while循环仅显示唯一值

PHP while循环仅显示唯一值,php,while-loop,Php,While Loop,我有一个数组,其中包含以下信息: Country C_Count C_Resp Location L_Count L_resp UK 100 10 London 20 5 UK 100 10 Man

我有一个数组,其中包含以下信息:

Country          C_Count          C_Resp          Location          L_Count          L_resp

UK               100              10              London            20               5
UK               100              10              Manchester        80               5
France           20               3               Paris             10               1
France           20               3               Lyon              10               2
我正在使用
WHILE
循环,并希望循环到一个表中,该表显示国家、C_计数和C_Resp一次,并在位置下方显示每个位置的L_计数和L_Resp

目前,正在发生的是,该国家、C_Count和C_Resp的出现次数与地点的出现次数一样多

输出如下所示:

Country/ Location    Count     Resp
UK                   100       10
London               20        5
Manchester           80        5
France               20        3
Paris                10        1
Lyon                 10        2
不确定这在
循环中是否可行,而
循环-欢迎任何想法或建议。

让我试试这个:

获取所有可用的国家/地区:

$countries = [];

function in_array_r($item , $array){
    return preg_match('/"'.$item.'"/i' , json_encode($array));
}

foreach($array as $a){
    if(!in_array_r($a['Country'], $countries)){
        $country['country'] = $a['Country'];
        $country['count'] = $a['C_Count'];
        $country['resp'] = $a['C_resp'];
        $countries[] = $country;
    }
}
然后回显国家的相关数据:

echo "Country\Location\tCount\Resp";

foreach($countries as $c){
    $data = '';
    echo $c['country']."\t".$c['count']."\t".$c['resp']."\n";
    foreach($array as $a){
        if($a['Country']==$c['country']){
            $data .= $a['Location']."\t".$a['L_Count']."\t".$a['L_resp']."\n";
        }
    }
    echo $data;
}

我们不可能说你的代码出了什么问题,因为我们所要做的就是对整个过程进行极其模糊的描述。但这看起来甚至不像是一个PHP问题。您确定您没有询问SQL吗?使用while循环本身并没有什么错误。但是,如果没有任何特定的代码,就不可能知道出了什么问题。数组中不能有两个相同的键,最后一个键将覆盖第一个键。这是一个PHP问题,因为
DISTINCT
不能用于返回数组中存储的信息的MySQL查询。因此,我试图理解的是,无论出现多少次,是否有可能循环通过并仅撤出该国一次,然后在相关国家下的位置。