如何使foreach循环仅在php中取值?

时间:2019-06-09 17:24:58

标签: php button foreach

我正在使用Code#A的 php代码,如下所示,其中在调试时(Line#A)打印以下内容:

代码#A

$mp4_files = array_values($mp4_files);

print_r($mp4_files);   // Line#A
  

第A行的输出:

Array ( [0] => 36031P.mp4 [1] => hello.mp4 )

代码#B

print_r($_POST['id']);   // Line#B

  if (!empty($_POST['id']))
  {
     foreach ($mp4_files as $f)
         {   
             print_r($f); // Line#C prints 2 values 36031P.mp4hello.mp4
             $parts = pathinfo($f);
             switch ($parts['extension'])
             {
                 case 'mp4' :
                 $filePath = $src_dir . DS . $f;
                 system('ffmpeg -i ' . $filePath . ' -map 0:2 -ac 1 ' . $destination_dir . DS . $parts['filename'] . '.mp3', $result);
             }
         }
   }
代码#B中的

行#B 具有 2个值:点击时出现的 0 1 来自2个不同行的按钮。

单击第一行按钮时,值0 显示在 Line#B

单击第二行按钮时,值1 显示在 Line#B


问题陈述:

我想知道应该对(具有Line#B和Line#C)以上的 php代码(代码#B)进行哪些更改,以便:< / p>

点击第一行按钮后,行#C打印36031P.mp4

点击第二行按钮时,行#C打印hello.mp4

2 个答案:

答案 0 :(得分:1)

使用foreach的AFAIK将遍历整个数组,因为未指示停止点。
尝试以下操作...

    for($i=0; $i <= count($mp4_files); $i++) {
        if($i == $_POST['id']) {
            $parts = pathinfo( $mp4_files[$i] );
            switch ($parts['extension']) {
                //
            }
        break;
        }
    }

您可以从那里开始。对不起,我正在从移动设备上键入内容,因此并不容易。我一把手放在机器上,就会寄出更好的东西。

已编辑
在您的代码中尝试以下操作

    print_r($_POST['id']);   // Line#B
    if (!empty($_POST['id'])) {
        foreach ($mp4_files as $key => $f) {
            if($key == $_POST['id']) {
                print_r($f); // Line#C prints 2 values 36031P.mp4hello.mp4
                $parts = pathinfo($f);
                switch ($parts['extension']) {
                    case 'mp4' :
                    $filePath = $src_dir . DS . $f;
                    system('ffmpeg -i ' . $filePath . ' -map 0:2 -ac 1 ' . $destination_dir . DS . $parts['filename'] . '.mp3', $result);
                    break;
                }
            }
            break; //stop further iteration after the condition is met
        }
    }

请注意$key声明中的其他foreach,以及以后如何将其用于比较。

答案 1 :(得分:1)

如果$_POST['id']始终与array_values返回的索引一致,那么它将起作用:

$mp4Files = array_values($mp4Files);

if (
    !empty($_POST['id']) &&
    !empty($mp4Files[$_POST['id']])
) {
    print_r($mp4Files[$_POST['id']]); // Line#C
}