Thanks to KIKO Software, you can still use array_count_values() for this cases. You will also need to use array_columns() and array_search() in this situation. You can refer to this link to see how array_search() helps in finding the maximum/minimum value and its corresponding key inside an array. To find the most or least occurrence, simply echo the last 6 variables that I have declared in the last 6 lines.
EDIT* reference:
unset
array_push
*And also, your first data in the assoc array is indexed 'user', but the second data in the assoc array is not indexed and hence it is indexed as 0. 
$dataSet = [
            'users' => 
            [
                'id' => 1,
                'name' => "Alex",
                'username' => 'alex',
            ],
            [
                'id' => 2,
                'name' => "Alex",
                'username' => 'alex'
            ],
            [
                'id' => 2,
                'name' => "Peter Khot",
                'username' => 'peter',
            ]
        ];
$id = array_column($dataSet,'id');
$name = array_column($dataSet, 'name');
$username = array_column($dataSet, 'username');
$occur_id = array_count_values($id);
$occur_name = array_count_values($name);
$occur_username = array_count_values($username);
$most_occur_id  = array_search(max($occur_id),$occur_id);
$most_occur_name  = array_search(max($occur_name),$occur_name);
$most_occur_username  = array_search(max($occur_username),$occur_username);
$least_occur_id  = array_search(min($occur_id),$occur_id);
$least_occur_name  = array_search(min($occur_name),$occur_name);
$least_occur_username  = array_search(min($occur_username),$occur_username);
EDIT*: (In case of multiple highest occurence OR all same occurence, just add below code right below the above code.)
$flag = true;
$most_occur_name_list = [];
$count = 0;
while($flag)
{
  $most_occur_name_ct =  max($occur_name);
  if($most_occur_name_ct == $count || $count == 0)
    {
      array_push($most_occur_name_list,array_search($most_occur_name_ct,$occur_name));
      unset($occur_name[array_search($most_occur_name_ct,$occur_name)]);
      $count = $most_occur_name_ct;
      if(count($occur_name) == 0)
      {
          $flag = false;
          break;
      }
    }
  else
    {
      $most_occur_name_ct = $count;
      $flag = false;
      break;
    }
}
//must reinitialize the array
$occur_name = array_count_values($name);
$flag = true;
$least_occur_name_list = [];
$count = 0;
while($flag)
{
  $least_occur_name_ct =  min($occur_name);
  if($least_occur_name_ct == $count || $count == 0)
    {
      array_push($least_occur_name_list,array_search($least_occur_name_ct,$occur_name));
      unset($occur_name[array_search($least_occur_name_ct,$occur_name)]);
      $count = $least_occur_name_ct;
      if(count($occur_name) == 0)
      {
          $flag = false;
          break;
      }
    }
  else
    {
      $least_occur_name_ct = $count;
      $flag = false;
      break;
    }
}
if($most_occur_name_ct == $least_occur_name_ct)
{
    $most_occur_name_list = [];
    $least_occur_name_list = [];
}
echo "<pre>";
print_r($most_occur_name_list);