如何将函数输出到文件中

时间:2013-12-26 11:27:12

标签: php function return fopen

我有这个功能:

function permGen($a,$b,$c,$d,$e,$f,$g) {
    foreach ($a as $key1 => $value1){
        foreach($b as $key2 => $value2){
            foreach($c as $key3 => $value3) {
            print trim($d[rand(0,count($d)-1)]).trim($value1).trim($e[rand(0,count($e)-1)]).trim($value2).trim($f[rand(0,count($f)-1)]).trim($value3).$g;
            }
        }
    }
}

这是我需要的输出,当我在屏幕上打印时,它可以正常工作。

假设我没有任何问题地定义所有参数。现在这是问题,当我把permGen($ arguments ....);有用。但是当我尝试通过这样的文件处理在文件中写这个时,

$handle = fopen('new.txt', 'w+');
fwrite($handle, permGen($arguments...));

它似乎无法奏效。它创建了一个文件,但没有任何内容。我尝试替换打印并返回。然后它只是在new.txt中给出了一个循环,没有别的东西。似乎没有什么工作按照我想要的输出。

由于

2 个答案:

答案 0 :(得分:1)

function permGen($a,$b,$c,$d,$e,$f,$g) {
    $output = '';
    foreach ($a as $key1 => $value1){
        foreach($b as $key2 => $value2){
            foreach($c as $key3 => $value3) {
                $output .= trim($d[rand(0,count($d)-1)]).trim($value1).trim($e[rand(0,count($e)-1)]).trim($value2).trim($f[rand(0,count($f)-1)]).trim($value3).$g;
            }
        }
    }

    return $output;
}

答案 1 :(得分:1)

function permGen($handle, $a,$b,$c,$d,$e,$f,$g) {
    foreach ($a as $key1 => $value1){
        foreach($b as $key2 => $value2){
            foreach($c as $key3 => $value3) {
                fwrite(
                    $handle, 
                    trim($d[rand(0,count($d)-1)]).trim($value1).trim($e[rand(0,count($e)-1)]).trim($value2).trim($f[rand(0,count($f)-1)]).trim($value3).$g;
                );
            }
        }
    }
}

// To write to a file
$handle = fopen('new.txt', 'w+');
permGen($handle, $other, $arguments, ...);
fclose($handle);

// To write to normal output (browser, whatever)
$handle = fopen('php://output', 'w');
permGen($handle, $other, $arguments, ...);
fclose($handle);

修改

如果您不想以任何方式修改您的功能,那么您可以使用输出缓冲来捕获打印输出:

ob_start();
permGen($arguments...);
$output = ob_get_contents();
ob_end_clean();

file_put_contents(
    'new.txt',
    $output,
    FILE_APPEND
);