我正在尝试读取一个由文件名组成的文件,并将每个文件名的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";
}
的问题:
我在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 .
答案 0 :(得分:0)
尝试更改
$j=0;
到
$j=count($fileNameArray2);
答案 1 :(得分:0)
这是因为您使用echo
$fileNameArray4
$fileNameArray4 = $fileNameArray;
$fileNameArray
。 array_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";
}