@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..
вот если что ссылка на песочницу
  • Вопрос задан
  • 112 просмотров
Решения вопроса 1
ramm1337
@ramm1337
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);
}
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
SymbioWay Москва
от 120 000 до 180 000 ₽
Директ Кредит Казань
от 70 000 до 120 000 ₽
ИМАГ Москва
от 90 000 до 100 000 ₽
14 авг. 2020, в 02:27
1000 руб./за проект
14 авг. 2020, в 01:51
600 руб./за проект
13 авг. 2020, в 23:56
200000 руб./за проект