php - 如何使 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 个值:0和1,它们来自于来自 2 个不同行的单击按钮。
单击第一行按钮时,值 0显示在 Line#B
单击第二行按钮时,值 1显示在Line#B
问题陈述:
我想知道我应该在上面的php 代码(Code#B)(具有 Line#B 和 Line#C)中进行哪些更改,以便:
单击第一行按钮时,Line#C 打印 36031P.mp4。
单击第二行按钮时,Line#C 打印 hello.mp4。
解决方案
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
以及我后来如何使用它进行比较。
推荐阅读
- microsoft-teams - 无法保存团队连接器的配置
- swift - 我将如何在 Flutter 中编写这个标签栏?
- java - 模拟来自外部类的数据库调用
- python - 在 Django 自定义查询集中使用布尔值
- c# - 如何计算三个不同的坐标在网格上是否彼此相邻?
- android - 如何在android Q上方获取保存的wifi网络的名称和其他信息?
- python - Keras 模型在训练、验证和评估方面表现良好,但在预测新图像时表现不佳
- reactjs - 可访问 lowdb 的 React 组件的模式
- r - 如何在 R 中创建唯一的随机数?
- c# - GC.Collect() 后未调用终结器