Как использовать pathinfo в php? - PullRequest
0 голосов
/ 10 июня 2019

Я работаю над php-кодом, как показано ниже, на котором строка # A печатает следующий массив (показан под php-кодом). Мой код, похоже, не входит в оператор switch. Я не уверен почему.

Я добавил print_r($parts) в строке A, чтобы напечатать значение $ parts.

php код:

<?php
    if (!empty($_POST['id']))
    {
    for($i=0; $i <count($mp4_files); $i++) {
    if($i == $_POST['id']) {
    $f = $mp4_files[$i];
    $parts = pathinfo($f);
    print_r($parts);                    // Line A
    switch ($parts['extension'])
    {
    echo "Hello World";                 // Line B
    case 'mp4' :
    $filePath = $src_dir . DS . $f;
    system('ffmpeg -i ' . $filePath . ' -map 0:2 -ac 1 ' . $destination_dir . DS . $parts['filename'] . '.mp3', $result);
    }
    }
    }
    }
?>

Выход (строка № A):

Array 
(
    [dirname]  => .
    [basename] => hello.mp4
    [extension] => mp4
    [filename] => hello
)

Я использовал echo "Hello World" в строке B, но по некоторым причинам он не печатается и выдает 500 internal server error на консоль.

Постановка задачи:

Мне интересно, какие изменения я должен внести в код php, чтобы он входил в оператор switch.

1 Ответ

0 голосов
/ 10 июня 2019

Ошибка 500 вызвана echo "Hello World" в строке B, которая находится за пределами случая mp4.

Ваш оператор switch должен быть таким.

switch ($parts['extension']) {
    case 'mp4':
        echo "hello world";
        $filePath = $src_dir . DS . $f;
        system('ffmpeg -i ' . $filePath . ' -map 0:2 -ac 1 ' . $destination_dir . DS . $parts['filename'] . '.mp3', $result);
        break;
}
...