@Drumsid

Не работает функция php?

Не пойму почему при $j =0; работает, а $j = 1 или больше, возвращает NULL
$sentence = 'jabjcdel';
$j = 0; // Работает
//$j = 1; // не работает 

function longStr(string $str, int $j){
    $len = strlen($str);
    $arrStr = [];
    while ($j < $len) {
        if(!in_array($str[$j], $arrStr)){
            $arrStr[] = $str[$j];
            $j++;
        } else {
             return count($arrStr);
        }  
        
    }

}


$a = longStr($sentence, $j);
var_dump($a);

Подскажите в чем причина? Не давно начал осваивать php..
вот если что ссылка на песочницу
  • Вопрос задан
  • 114 просмотров
Решения вопроса 1
rammtw
@rammtw
Press CTRL+S to save project
Если по простому, то у вас заканчивается цикл, и в else условие никогда не попадет.
Тут можно добавить еще один return count($arrStr), после цикла

$sentence = 'jabjcdel';
$j = 0; // Работает
//$j = 1; // Работает 

function longStr(string $str, int $j){
    $len = strlen($str);
    $arrStr = [];
    while ($j < $len) {
        if(!in_array($str[$j], $arrStr)){
            $arrStr[] = $str[$j];
            $j++;
        } else {
             return count($arrStr);
        }  
    }
    return count($arrStr);
}


$a = longStr($sentence, $j);
var_dump($a);
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@Nujabes37
:DEATH
Это происходит потому что, если ты задаешь значение для $j = 1, то условие внутри if никогда не будет true, добавь еще один return в конец.
function longStr(string $str, int $j){
    $arrStr = [];
    while ($j < strlen($str)) {
        if(! in_array($str[$j], $arrStr, true)){
            $arrStr[] = $str[$j];
            $j++;
        } else {
            return count($arrStr);
        }
    }
    return count($arrStr);
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
19 апр. 2024, в 20:43
20000 руб./за проект
19 апр. 2024, в 20:11
500 руб./за проект