Нет возвращаемого значения - PullRequest
0 голосов
/ 28 октября 2018

Не могу понять, почему возвращение не является правильным.Это должно быть dir_3, если echo это правильно.

Функция проверяет массив existing_dirs, если существует $new_dir, если он существует, если добавляет _xx к $new_dir, если нет, он должен возвращать $new_dir.Но это не так, однако, если вы echo $new_dir это правильно dir_3.

Потратил часы на отладку, что кажется простой проблемой!

Спасибо

function dir_name($new_dir, $count){
    $existing_dirs = array('dir', 'dir_1', 'dir_2');
    if(in_array($new_dir, $existing_dirs)){ 
        $count ++;
        if($count == 1) {
            $new_dir = $new_dir . '_' . $count;
        }
        if($count > 1){
            $dir_parts = explode('_', $new_dir);
            $new_dir = $dir_parts[0] . '_' . $count;
        }
        dir_name($new_dir, $count);
    } else {
        //echo $new_dir;
        return $new_dir;
    }
}

echo dir_name('dir');

1 Ответ

0 голосов
/ 28 октября 2018

Кажется, вам нужно вернуть sth в if случае.

function dir_name($new_dir, $count){
    $existing_dirs = array('dir', 'dir_1', 'dir_2');
    if(in_array($new_dir, $existing_dirs)){ 
        $count ++;
        if($count == 1) {
            $new_dir = $new_dir . '_' . $count;
        }
        if($count > 1){
            $dir_parts = explode('_', $new_dir);
            $new_dir = $dir_parts[0] . '_' . $count;
        }
        return dir_name($new_dir, $count);
    } else {
        //echo $new_dir;
        return $new_dir;
    }
}
...