[英]PHP creating text file with dynamic data from MYSQL issue
我正在使用mysql db字段编写带有php的文本文件,该字段本质上是动态的。 我无法保持列宽不变,请查看以下数据和列以更好地理解我的意思。
文本文件输出:
450 65445 90900 87954 112
90900 45875 24565 15484 KA01 23232
上面的php脚本:
$myFile = "testFile.txt";
$fh = fopen($myFile, 'w') or die("can't open file");
if ($quer2[DCNO1]>0){fwrite($fh, str_pad($quer2[DCNO1],19, " ", STR_PAD_LEFT));} if ($quer2[DCNO2]>0) {fwrite($fh, str_pad($quer2[DCNO2],6, " ", STR_PAD_LEFT));} if ($quer2[DCNO3]>0) {fwrite($fh, str_pad($quer2[DCNO3],6, " ", STR_PAD_LEFT));} if ($quer2[DCNO4]>0) {fwrite($fh, str_pad($quer2[DCNO4],6, " ", STR_PAD_LEFT));}
fwrite($fh, str_pad($dchd2['PO_No'],13, " ", STR_PAD_LEFT));
$stringData = "\n";
fwrite($fh, $stringData);
if ($quer2[DCNO5]>0) {fwrite($fh, str_pad($quer2[DCNO5],19, " ", STR_PAD_LEFT));} if ($quer2[DCNO6]>0) {fwrite($fh, str_pad($quer2[DCNO6],6, " ", STR_PAD_LEFT));} if ($quer2[DCNO7]>0) {fwrite($fh, str_pad($quer2[DCNO7],6, " ", STR_PAD_LEFT));} if ($quer2[DCNO8]>0) {fwrite($fh, str_pad($quer2[DCNO8],6, " ", STR_PAD_LEFT));}
fwrite($fh, str_pad($dchd2['Vehicle_no'],20, " ", STR_PAD_LEFT));
$stringData = "\n";
fwrite($fh, $stringData);
fclose($fh);
现在,如果列中的一个值为0,那么由于我的IF条件,该空间将被删除,在这种情况下,我该如何计算空间并给这些多余的空间。
如果我的IF条件中值之一为0,则为文本文件输出:
450 90900 112
90900 45875 24565 15484 KA01 23232
使用制表符(“ \\ t”)。 这样可以确保不同行上的每个项目都从同一列开始。
这意味着,当item为2个字符长且无法填充4个空格标签时,将添加2个空格。
请记住:不同的编辑器对选项卡有不同的概念,有些编辑器通常插入空格而不是选项卡。
编辑:实际上更简单的解决方案将是具有else子句并编写str_pad(“”,20);
您的代码非常忙,请尝试通过一个可以集中处理“ 0”的函数集中所有代码。 类似于下面的内容(此代码尚未经过测试,但是应该为您提供正确的想法。
$myFile = "testFile.txt";
$fh = fopen($myFile, 'w') or die("can't open file");
function writepad($str,$pad)
{
global $fh;
if($str==0) $str=" "; //handle the case where str is 0, replace it with a space
fwrite($fh,str_pad($str,$pad,STR_PAD_LEFT));
}
writepad($quer2[DCNO1],19);
writepad($quer2[DCNO2],6);
writepad($quer2[DCNO3],6);
writepad($quer2[DCNO4],6);
writepad($quer2['PO_No'],13);
fwrite($fh, "\n");
writepad($quer2[DCNO5],19);
writepad($quer2[DCNO6],6);
writepad($quer2[DCNO7],6);
writepad($quer2[DCNO8],6);
writepad($quer2['Vehicle_no'],20);
fwrite($fh, "\n");
fclose($fh);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.