/**
  * Return the key fields z-values for the selected city and the key fields z-values average
  * @param string $cityName name of the selected city
  * @return array $cityValues it contains the z-values and a z-values average
  */
 public function profile($cityName)
 {
     if (isset($cityName)) {
         if (strcmp($cityName, '') != 0) {
             $keyFieldsZValues = new RankController();
             $average = new ZtransformController();
             //Retrive the z-values for each key field
             $educationKeyField = $keyFieldsZValues->educationKeyField();
             $governmentExpenKeyField = $keyFieldsZValues->governmentExpendituresKeyField();
             $healthKeyField = $keyFieldsZValues->healthKeyField();
             $economyKeyField = $keyFieldsZValues->economyKeyField();
             $employmentKeyField = $keyFieldsZValues->employmentKeyField();
             $environmentKeyField = $keyFieldsZValues->environmentKeyField();
             //create an array with each z-value of the selected city
             $cityInfo = array('Educação' => $educationKeyField[$cityName], 'Finanças Públicas' => $governmentExpenKeyField[$cityName], 'Saúde' => $healthKeyField[$cityName], 'Economia' => $economyKeyField[$cityName], 'Emprego' => $employmentKeyField[$cityName], 'Meio Ambiente' => $environmentKeyField[$cityName]);
             $cityValues = CityProfileController::mergeAverage($cityInfo);
             return $cityValues;
         }
     }
     return 0;
 }
 /**
  * This method will calculate a overall rating from the ranking create for each key field
  * it will sum the ranking values of each key value and then sort them from low to high,
  * once the city that has the lowest score will have the best position
  * @param array $keyFieldsRank It will receive multidimentional array which keeps
  *                             the ranking of each key field
  */
 private function overallRating($keyFieldsRank)
 {
     //Create an array with citie's name as key and each key set as zero
     $overallSort = array_fill_keys(array_keys($keyFieldsRank["education"]), 0);
     $overallRank = array();
     //Sum the cities scores
     foreach ($keyFieldsRank as $key => $keyField) {
         foreach ($keyField as $key => $value) {
             $overallSort[$key] += $value;
         }
     }
     //sort the ranking scores from low to high
     asort($overallSort);
     //Make the ranking from the sum of each city's rank
     $rankingScores = RankController::makeDenseRanking($overallSort);
     return $rankingScores;
 }