Я пишу функцию, которая будет использоваться для ограничения слишком длинных строк. Я хочу избежать дублирования кода, поэтому я подумал, что поместить почти целую «логику» функции в выражение возврата будет лучше, чем проверка состояния в каждом случае переключателя. Но давайте посмотрим код:
function test($mode, $string) {
$x = strlen("...");
$overThr = function($x, $y){strlen($string) >= $y + $x + 1;};
switch ($mode) {
case 'artist_week':
$y = 29;
break;
case 'songs_week':
$y = 31;
break;
}
return (substr($string, 0, $overThr($x, $y) ? $y : strlen($string))) . ($overThr($x, $y) ? "..." : "");
}
Как вы можете видеть, я хочу использовать $ overThr как гибкое условие в троичном операторе. Но я не могу понять, почему каждый раз, когда $ overThr выполняется в выражении «return», он всегда возвращает false.
$a = test('songs_week', 'razdwatrzyczterypiecszescsiedemrazdwatrzyczterypiecszescsiedem');
echo $a;
//razdwatrzyczterypiecszescsiedemrazdwatrzyczterypiecszescsiedem
кто-нибудь знает? :)