【问题标题】:PHP creating text file with dynamic data from MYSQL issuePHP使用来自MYSQL问题的动态数据创建文本文件
【发布时间】:2012-05-09 04:58:16
【问题描述】:

我正在使用 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

【问题讨论】:

标签: php text


【解决方案1】:

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

表示当item为2个字符长且不能填满4个空格制表符时,添加2个空格。

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

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

【讨论】:

  • 好吧,你还是有同样的问题,只是 8 的倍数。
  • 是的,你是对的,他只是没有在每个代码执行路径中始终如一地使用它,因此出现了问题。
  • @LukaRamishvili else 选项是更好的选择。它工作正常。非常感谢。
  • @user1114409 如果您只是想将每一行除以 2 个空行,那么不要基于已打印的行数,而只需 echo "\n\n" each一行结束的时间。
  • 例如`第 1 行第 1 项第 2 项第 3 行 \n\n 第 2 行第 1 项第 2 行 \n\n 第 3 行.. 等等。
【解决方案2】:

您的代码非常繁忙,请尝试通过一个可以在一个地方处理“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);

【讨论】:

    猜你喜欢
    • 2021-01-01
    • 2013-05-17
    • 1970-01-01
    • 2011-10-21
    • 2016-04-13
    • 2013-11-12
    • 2020-09-28
    • 2020-06-19
    • 2015-06-17
    相关资源
    最近更新 更多