首页 > 解决方案 > 如何使 foreach 循环在 php 中只取值?

问题描述

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

代码#A

$mp4_files = array_values($mp4_files);

print_r($mp4_files);   // Line#A

Line#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);
             }
         }
   }

Code#B 中的Line# B 有2 个值01,它们来自于来自 2 个不同行的单击按钮。

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

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


问题陈述:

我想知道我应该在上面的php 代码(Code#B)(具有 Line#B 和 Line#C)中进行哪些更改,以便:

单击第一行按钮时,Line#C 打印 36031P.mp4

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

标签: phpbuttonforeach

解决方案


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

    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以及我后来如何使用它进行比较。


推荐阅读