迭代数组以更改文件名

I am trying to rename uploaded files from an array.

Each element (2 total in this case) contains the filepath/name. (filename_a and filename_b)

When I run the script, and echo the results, I get the following:

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

While I expect:

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

The second element (filename) is not changed. Still shows the first filename and echos 4 instead of the two elements in the array. Does not iterate through the array.

The code:

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

I did not include the rename code as it works by itself. Any suggestions?

In the top foreach loop you are writing to $path_parts several times without using the variable. The two loops should be combined into one.

Try this:

$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++;
}

Output:

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

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