在php中使用foreach时输出中的额外点

时间:2013-12-19 07:21:11

标签: php

我正在尝试读取一个由文件名组成的文件,并将每个文件名的mv class.module.example.php class.module.examplejason.php写入文件。

这是我的代码:

$lines = file('/home/Staging/txts/textFile.txt');
$developer = "jason";
foreach ($lines as $line_num => $line) 
{
    $fileNameArray = array_reverse(explode("/",$line));
    $fileNameArray2 = array_reverse(explode(".",$fileNameArray[0]));
    $fileNameArray2[1] = $fileNameArray2[1].$developer;
    $fileNameArray3 = array_reverse($fileNameArray2);
    $j=0;

    for($i=1;$i<count($fileNameArray2);$i++)
    {
            $dot=".";
            if($j==$i)
            { 
              $dot="";
            }
            $devFileName = $devFileName.$fileNameArray3[$i].$dot;
             $j++;
    }
    $fileNameArray4 = $fileNameArray;
    $fileNameArray4[0] = $devFileName;

    $fileNameArray4 = implode("/",array_reverse($fileNameArray4));

    echo "mv ".$fileNameArray[0]." ".$fileNameArray4."\r\n";
}

的问题:

  1. 我在for循环结束时得到的输出是:class.module.examplejason.php . 为什么我会得到最后一个.?我做错了什么?

    如果我的文件有2个文件名,例如/home/Staging/class.module.example.php和/home/Staging/class.module.anotherExample.php,则输出为:

    mv class.module.example.php /home/Staging/class.module.examplejason.php . mv class.module.anotherExample.php /home/Staging/class.module.anotherExamplejason.php .

3 个答案:

答案 0 :(得分:0)

尝试更改

$j=0;

$j=count($fileNameArray2);

答案 1 :(得分:0)

这是因为您使用echo $fileNameArray4 $fileNameArray4 = $fileNameArray; $fileNameArrayarray_reverse(explode("/",$line))是一个数组(由{{1}}生成),因此您可以从中获得一个点。不要试图回应数组。

答案 2 :(得分:0)

您的for循环不正确。您可以将implode用于相同目的:

<?php
$lines = file('/home/Staging/txts/textFile.txt');
$developer = "jason";
foreach ($lines as $line_num => $line) 
{
    $fileNameArray = array_reverse(explode("/",$line));
    $fileNameArray2 = array_reverse(explode(".",$fileNameArray[0]));
    $fileNameArray2[1] = $fileNameArray2[1].$developer;
    $fileNameArray3 = array_reverse($fileNameArray2);

    $fileNameArray4 = $fileNameArray;
    $fileNameArray4[0] = implode(".",$fileNameArray3);

    $fileNameArray4 = implode("/",array_reverse($fileNameArray4));

    echo "mv ".$fileNameArray[0]." ".$fileNameArray4."\r\n";
}