Минимальный код PHP, использующий функцию sort () - PullRequest
1 голос
/ 09 мая 2020

У меня есть эта функция, которую я пытаюсь поместить в одну строку, но я не могу понять, как я могу реализовать sort () в той же строке.

# Mediana x̃    de un conjunto de elementos ($e)
Mediana($e=array()){    
  sort($e); 
  return (count($e)!=0)?((count($e)%2==0)?(($e[(count($e)/2)]+$e[((count($e)/2)+1)])/2):$e[((count($e)/2)+1)]):0;
}

Мне не нравится ( эстетически говоря) грязным способом:

sort($e); return (count($e)!=0)?((count($e)%2==0)?(($e[(count($e)/2)]+$e[((count($e)/2)+1)])/2):$e[((count($e)/2)+1)]):0;

Буду признателен, если кто-нибудь даст мне несколько советов по этому поводу. Tnx.

1 Ответ

1 голос
/ 09 мая 2020

Вы можете включить sort() в условия, таким образом, метод возвращает логическое значение, и однажды отсортированный массив остается отсортированным в этом случае.

function Mediana($e = array())
{
    return (count($e) != 0 && sort($e)) ? ((count($e) % 2 == 0) ? (($e[(count($e) / 2)] + $e[((count($e) / 2) + 1)]) / 2) : $e[((count($e) / 2) + 1)]) : 0;
}

или

function Mediana($e = array())
{
    return (sort($e) && count($e) != 0) ? ((count($e) % 2 == 0) ? (($e[(count($e) / 2)] + $e[((count($e) / 2) + 1)]) / 2) : $e[((count($e) / 2) + 1)]) : 0;
}
...