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

如何使foreach循环在php中只取值?,php,button,foreach,Php,Button,Foreach,我正在使用代码a中的php代码,如下所示,在调试中(第a行)打印以下内容: 代码#A $mp4_files = array_values($mp4_files); print_r($mp4_files); // Line#A 第#A行的输出: 代码#B print_r($_POST['id']); // Line#B if (!empty($_POST['id'])) { foreach ($mp4_files as $f) {

我正在使用代码a中的php代码,如下所示,在调试中(第a行)打印以下内容:

代码#A

$mp4_files = array_values($mp4_files);

print_r($mp4_files);   // Line#A
第#A行的输出:


代码#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
有两个值:01,点击两行中的按钮即可获得

单击第一行按钮时,值0显示在行#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);
             }
         }
   }
单击第二行按钮时,值1显示在行#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);
             }
         }
   }

问题陈述:

我想知道我应该在上面的php代码(代码B)中做些什么更改(有第B行和第C行)

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


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

AFAIK,使用
foreach
将在整个阵列中循环,因为没有指示停止点。
试试下面的


注意
foreach
声明中的附加
$key
,以及我后来如何使用它进行比较。

AFAIK,使用
foreach
将在整个数组中循环,因为没有指示停止点。
试试下面的


请注意
foreach
声明中的附加
$key
,以及我后来如何使用它进行比较。

如果
$\u POST['id']
始终与
数组\u值返回的索引一致,这将起作用:

$mp4Files = array_values($mp4Files);

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

如果
$\u POST['id']
始终与
数组\u值返回的索引一致,这将起作用:

$mp4Files = array_values($mp4Files);

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

这是对原问题的评论。我没有足够的声誉将其添加为评论=>
print\r($f);/第C行打印2个值36031P.mp4hello.mp4
当您在整个
数组上执行完整迭代时,此输出是两个不同
打印
的串联结果。要清楚地显示这一点,请尝试=>
print\r($f);回音“\n”我正在修改我的问题。在foreach循环中,正在将mp4转换为mp3。刚刚修改了我的问题。让我知道它的外观。正如@parsonsbot所解释的,并且我理解了您的问题,您只想从数组中打印一个与
$\u POST['id']
相对应的值?请注意,在没有匹配条件的数组上调用
foreach
,或
break
continue
etc语句,整个数组将被迭代,这意味着将打印所有条目。要避免这种情况,请选中仅在
数组索引==$\u POST['id']
时使用该值,并在满足条件时将
从循环中断开。我将编辑我的答案以显示完整的代码。是的,我已经从代码中删除了break。在我的代码中,由于某些原因,它是not GONG switch语句。不知道是什么问题。我在switch语句中加入了echo“helloworld”,它没有打印任何内容。这是对原始问题的评论。我没有足够的声誉将其添加为评论=>
print\r($f);/第C行打印2个值36031P.mp4hello.mp4
当您在整个
数组上执行完整迭代时,此输出是两个不同
打印
的串联结果。要清楚地显示这一点,请尝试=>
print\r($f);回音“\n”我正在修改我的问题。在foreach循环中,正在将mp4转换为mp3。刚刚修改了我的问题。让我知道它的外观。正如@parsonsbot所解释的,并且我理解了您的问题,您只想从数组中打印一个与
$\u POST['id']
相对应的值?请注意,在没有匹配条件的数组上调用
foreach
,或
break
continue
etc语句,整个数组将被迭代,这意味着将打印所有条目。要避免这种情况,请选中仅在
数组索引==$\u POST['id']
时使用该值,并在满足条件时将
从循环中断开。我将编辑我的答案以显示完整的代码。是的,我已经从代码中删除了break。在我的代码中,由于某些原因,它是not GONG switch语句。不知道是什么问题。我把echo“helloworld”放在switch语句中,它没有打印任何内容。