Php 遍历数组以更改文件名

Php 遍历数组以更改文件名,php,arrays,Php,Arrays,我正在尝试重命名阵列中上载的文件 每个元素(本例中总共2个)包含文件路径/名称。(文件名a和文件名b) 当我运行脚本并回显结果时,我得到以下结果: filename: filename_a basename: filename_a.jpg extension: jpg newfilename: 17_0.jpg filename: filename_a basename: filename_a.jpg extension: jpg newfilename: 17_1.jpg filename

我正在尝试重命名阵列中上载的文件

每个元素(本例中总共2个)包含文件路径/名称。(文件名a和文件名b)

当我运行脚本并回显结果时,我得到以下结果:

filename: filename_a
basename: filename_a.jpg
extension: jpg
newfilename: 17_0.jpg

filename: filename_a
basename: filename_a.jpg
extension: jpg
newfilename: 17_1.jpg

filename: filename_a
basename: filename_a.jpg
extension: jpg
newfilename: 17_2.jpg

filename: filename_a
basename: filename_a.jpg
extension: jpg
newfilename: 17_3.jpg
我希望:

filename: filename_a
basename: filename_a.jpg
extension: jpg
newfilename: 17_0.jpg

filename: **filename_b**
basename: **filename_b.jpg**
extension: jpg
newfilename: 17_1.jpg
第二个元素(文件名)未更改。仍然显示第一个文件名和echos 4,而不是数组中的两个元素。不遍历数组

守则:

foreach( $_POST['ax-uploaded-files'] as $filepath)
{
$path_parts = pathinfo($filepath);
}

for ($i = 0; $i < count($path_parts); ++$i) {
    $basename    = $path_parts['basename'];
    $filename    = $path_parts['filename'];
    $extension   = $path_parts['extension'];
    $newfilename = $submission_id . '_' . $i . '.' . $extension;

    echo '<br>filename: ' . $filename;
    echo '<br>basename: ' . $basename;
    echo '<br>extension: ' . $extension;
    echo '<br>newfilename: ' . $newfilename . '<br>';

    rename("photos/".$submission_id."/primary/".$filename.".".$extension, "photos/".$submission_id."/primary/" .$newfilename);
}
foreach($\u POST['ax-upload-files']作为$filepath)
{
$path\u parts=pathinfo($filepath);
}
对于($i=0;$i文件名:”。$filename;
回显'
basename:'。$basename; 回显“
扩展名:”.$extension; 回显“
新文件名:”.$newfilename.“
”; 重命名(“照片/”$submission\u id./primary/“$filename..”.“$extension,”照片/“$submission\u id./primary/”$newfilename); }

我没有包括重命名代码,因为它本身可以工作。有什么建议吗

在顶部的
foreach
循环中,您在不使用变量的情况下多次写入
$path\u parts
。这两个回路应合并为一个回路

试试这个:

$a = array('filepath/fa.jpg', 'filepath/fb.jpg');
$submission_id = 17;
$i = 0;

foreach( $a as $filepath)
{
    $path_parts = pathinfo($filepath);

    $basename = $path_parts['basename'];
    $filename = $path_parts['filename'];
    $extension = $path_parts['extension'];
    $newfilename = $submission_id . '_' . $i . '.' . $extension;


    echo '<br>filename: ' . $filename;
    echo '<br>basename: ' . $basename;
    echo '<br>extension: ' . $extension;
    echo '<br>newfilename: ' . $newfilename . '<br>';
    $i++;
}

我们需要看看你的阵列花花公子…在$a之后添加了[0],效果非常好!谢谢foreach($a[0]作为$filepath)
filename: fa
basename: fa.jpg
extension: jpg
newfilename: 17_0.jpg

filename: fb
basename: fb.jpg
extension: jpg
newfilename: 17_1.jpg