Php 计算唯一值,同时构建唯一值数组

Php 计算唯一值,同时构建唯一值数组,php,foreach,count,Php,Foreach,Count,我有以下返回唯一用户名的foreach循环 $my_array = array(); foreach ( $log->results as $entry ) { $unData = unserialize( $entry ->data ); $ref_id = $entry ->ref_id; $ref_nick = get_user_meta( $ref_id, 'nickname', true ); if ( i

我有以下返回唯一用户名的foreach循环

$my_array = array();
foreach ( $log->results as $entry ) {

        $unData = unserialize( $entry ->data );

        $ref_id = $entry ->ref_id;
        $ref_nick = get_user_meta( $ref_id, 'nickname', true );

    if ( in_array($ref_nick, $my_array) ) {
        continue;
    } 
    $my_array[] = $ref_nick;
    echo $ref_nick;
}
我想数一数用户名,这样我就可以最终使用HTML模板,如:

用户名 计数 爱丽丝 22 上下快速移动 10 查理 7.
一个选项是像这样构建
$my_数组

$my_array = array();
foreach ( $log->results as $entry ) {

        $unData = unserialize( $entry ->data );

        $ref_id = $entry ->ref_id;
        $ref_nick = get_user_meta( $ref_id, 'nickname', true );
   
    if ( array_key_exists($ref_nick, $my_array) ) {
        //nick already exists in array, so add +1 to existing value
            $my_array[$ref_nick] = $my_array[$ref_nick] +1;
        } 
    else { 
        //add new nick to array and set value 1
        $my_array[$ref_nick] = 1;
    }
}
//Sort descending: 
arsort($my_array);

//Finally loop again and build your HTML:
foreach($my_array as $nick => $count) {
   echo '<tr><td>'.$nick.'</td></td>'.$count.'</td></tr>';
}
$my_array=array();
foreach($log->结果为$entry){
$unData=取消序列化($entry->data);
$ref\u id=$entry->ref\u id;
$ref_nick=get_user_meta($ref_id,'昵称',true);
如果(数组\u键\u存在($ref\u nick,$my\u数组)){
//数组中已存在nick,因此将+1添加到现有值
$my_数组[$ref_nick]=$my_数组[$ref_nick]+1;
} 
否则{
//将新刻痕添加到数组并设置值1
$my_数组[$ref_nick]=1;
}
}
//降序排序:
arsort($my_数组);
//最后,再次循环并构建您的HTML:
foreach($nick=>$count作为我的_数组){
回声“.$nick.”.$count.”;
}

当我var转储我的数组时,我得到{[“Alice”]=>int(1)[“Bob”]=>int(1)},所以只记录1,而不是上次
数组密钥存在的正确数字
编辑完成了它。谢谢。更新了答案。必须使用arsort()(按值排序)代替rsort()(按键排序)