Php 遍历数组以更改文件名
我正在尝试重命名阵列中上载的文件 每个元素(本例中总共2个)包含文件路径/名称。(文件名a和文件名b) 当我运行脚本并回显结果时,我得到以下结果: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
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