dpmwy80068 2014-03-26 15:03
浏览 30
已采纳

迭代数组以更改文件名

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?

  • 写回答

1条回答 默认 最新

  • duanseci1039 2014-03-26 15:10
    关注

    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
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败
  • ¥100 支付宝网页转账系统不识别账号
  • ¥15 基于单片机的靶位控制系统
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测