首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP从MYSQL问题创建包含动态数据的文本文件

PHP从MYSQL问题创建包含动态数据的文本文件
EN

Stack Overflow用户
提问于 2012-05-09 12:58:16
回答 2查看 820关注 0票数 2

我正在使用mysql数据库字段用php编写一个文本文件,这些字段本质上是动态的。我无法保持列的宽度不变,请看下面的数据和列,以便更好地理解我的意思。

文本文件输出:

代码语言:javascript
复制
                450 65445 90900 87954          112
              90900 45875 24565 15484          KA01 23232

上面的php脚本:

代码语言:javascript
复制
$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,则文本文件输出:

代码语言:javascript
复制
                450 90900           112
              90900 45875 24565 15484          KA01 23232
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-05-09 13:07:06

使用制表位("\t")。它确保不同行上的每个项目都从相同的列开始。

这意味着当项目长度为2个字符并且不能填满4个空格时,将添加2个空格。

请记住:不同的编辑器对制表符有不同的概念,有些编辑器通常会插入空格而不是制表符。

编辑:实际上更简单的解决方案是使用else子句并编写str_pad("",20);

票数 0
EN

Stack Overflow用户

发布于 2012-05-09 13:36:22

您的代码非常繁忙,请尝试通过一个可以在一个地方处理“0”的函数来集中所有代码。类似于下面的代码(这段代码没有经过测试,但应该会给你一个正确的想法。

代码语言:javascript
复制
$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);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10510087

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档