code: public static function PERCENTRANK($valueSet, $value, $significance = 3)
      {
          $valueSet = Functions::flattenArray($valueSet);
          $value = Functions::flattenSingleValue($value);
          $significance = ($significance === null) ? 3 : (int) Functions::flattenSingleValue($significance);
  
          foreach ($valueSet as $key => $valueEntry) {
              if (!is_numeric($valueEntry)) {
                  unset($valueSet[$key]);
              }
          }
          sort($valueSet, SORT_NUMERIC);
          $valueCount = count($valueSet);
          if ($valueCount == 0) {
              return Functions::NAN();
          }
  
          $valueAdjustor = $valueCount - 1;
          if (($value < $valueSet[0]) || ($value > $valueSet[$valueAdjustor])) {
              return Functions::NA();
          }
  
          $pos = array_search($value, $valueSet);
          if ($pos === false) {
              $pos = 0;
              $testValue = $valueSet[0];
              while ($testValue < $value) {
                  $testValue = $valueSet[++$pos];
              }
              --$pos;
              $pos += (($value - $valueSet[$pos]) / ($testValue - $valueSet[$pos]));
          }
  
          return round($pos / $valueAdjustor, $significance);
      }
docs: PERCENTRANK.
  
  Returns the rank of a value in a data set as a percentage of the data set.
  
  @param float[] $valueSet An array of, or a reference to, a list of numbers
  @param int $value the number whose rank you want to find
  @param int $significance the number of significant digits for the returned percentage value
  
  @return float