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查询。因此,我试图理解的是,无论出现多少次,是否有可能循环通过并仅撤出该国一次,然后在相关国家下的位置。