Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP文件输出,提要中的随机空格_Php - Fatal编程技术网

PHP文件输出,提要中的随机空格

PHP文件输出,提要中的随机空格,php,Php,以下函数用于读取一个文件,递增,然后将以下内容输出到一个文件,并输出到一个文本文档: function updateDaysAway($tenantName, $datefrom, $dateto){ $names = array(); $days = array(); $file = fopen("data/daysaway.txt", 'a+'); while (!feof($file)) { $data = fgets($file);

以下函数用于读取一个文件,递增,然后将以下内容输出到一个文件,并输出到一个文本文档:

function updateDaysAway($tenantName, $datefrom, $dateto){
    $names = array();
    $days = array();
    $file = fopen("data/daysaway.txt", 'a+');

    while (!feof($file)) {
        $data = fgets($file);
        if(!$data == '') {
            $pieces = explode(" ", $data);
            $names[] = $pieces[0];
            $days[] = $pieces[1];
        }
    }

    fclose($file);

    for($x = 0; $x < count($names); $x++) {
        if(strtolower($names[$x]) == strtolower($tenantName)){
            $datefromVAR = new DateTime($datefrom);
            $datetoVAR = new DateTime($dateto);
            $file = fopen("data/range.txt", 'a+');
            $days[$x] +=  $datetoVAR->diff($datefromVAR)->format('%a')+1;
        }
    }

    $file = fopen("data/daysaway.txt", 'w');

    for($x = 0; $x < count($names); $x++) {
        $entry = $names[$x]." ".$days[$x].PHP_EOL;
        fwrite($file, $entry);
    }

    fclose($file);
}
后文件

"
name 185
name 0




 // Random white space I don't want



"
相反,它以增量方式(似乎在每次写入后都会增加)输出一个空格和“”,在行尾随机输出,在行间随机输出。您有关于如何解决问题的信息吗?

找到了问题


将文件读入数组时,days参数(爆炸一侧)包含不可见的换行符。天哪,我讨厌PHP

我猜
if(!$data='')
应该是
if($data!='')
?@MagnusEriksson不,这两种方法的工作原理完全相同。实际上,它们不是:。PHP的类型转换有很多问题。不管怎么说,将数组用作布尔值只是为了将其与字符串进行比较,这感觉很奇怪。您是否尝试过在每个fwrite之后再写一行,如“-----”来进行调试?还可以尝试输出名称和天数数组的大小-读取方法中可能有一些有趣的地方我怀疑您的
$names
数组比实际条目大。尝试输出它的
count()
sizeof()
。如果没有,可以临时添加
ini\u集('display\u errors',true)显示到文件的顶部,查看是否显示了一些有用的内容。
"
name 185
name 0




 // Random white space I don't want



"
    $pieces = explode(" ", $data);
    $names[] = $pieces[0];
    $days[] = $pieces[1];