2017-11-13 9 views
1

これは遅いです(とにかくヨーロッパでは)、私の心はなぜ私が上記の質問に対する答えを見つけることができないのかブロックされています。PHP - fwriteを介して関数出力をファイルに書き込もうとしています

私の目標はsthを持つことです。最初に外部の.csvまたは.txtに書き込むkeygenプログラムのように。残りの部分は今のところ無視することができます。

どういうわけか、自分の機能をファイルにまとめて書くことができず、謙虚に助けを求めることができません。

<?php 
if (isset($_POST["codeCount"])) 
    $codeCount = $_POST["codeCount"]; 
if (isset($_POST["digitsCount"])) 
    $digitsCount = $_POST["digitsCount"]; 
if (isset($_POST["blockCount"])) 
    $blockCount = $_POST["blockCount"]; 

#Generieren eines Blocks mit x Digits 
function keygen($digitsCount){ 
    $charpool = "ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890"; 
    for ($i=0; $i < $digitsCount; $i++) { 
     $five = substr($charpool, random_int(0, strlen($charpool)-1), 1); 
     echo $five; 
    } 
} 

#Wie viele Blöcke soll es geben? 
function keygenLong($blockCount, $digitsCount){ 
    for ($i=0; $i < $blockCount; $i++) { 
     echo keygen($digitsCount); 
     if ($i != $blockCount-1) { 
      echo "-"; 
     } 
    } 
} 


#Wie viele Codes benötigen wir ingesamt? 
function codeOutput($codeCount, $blockCount, $digitsCount){ 
    for ($i=0; $i < $codeCount; $i++) { 
     keygenLong($blockCount, $digitsCount); 
     echo "<br>"; 
    } 
} 

codeOutput($codeCount, $blockCount, $digitsCount); 


// $code = "codeOutput"; 
// $string = $code($codeCount, $blockCount, $digitsCount); 

if (isset($_POST["submit"])) { 

    $file = fopen("keys.txt","w"); 

    fwrite($file, codeOutput($codeCount, $blockCount, $digitsCount); 
); 

    fclose($file); 
} 
+1

あなたは、ハードコードされた文字列を書くための - ファイルに現在、何を書きたいのですか? – nogad

+1

あなたの関数は 'echo'の代わりに' return'を使って値を出力します。その後、値を変数に代入してファイルに書き込むことができます – Phil

+0

しかしforループは無視され、動的出力は得られません –

答えて

0

はあなたの機能return値の代わりに、それらを-ing echoを持っています。次に、値を変数に代入してファイルに書き込むことができます。例えば

function keygen($digitsCount){ 
    $charpool = "ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890"; 
    for ($i=0; $i < $digitsCount; $i++) { 
     $five[] = substr($charpool, random_int(0, strlen($charpool)-1), 1); 
    } 
    return implode('', $five); 
} 

function keygenLong($blockCount, $digitsCount){ 
    for ($i=0; $i < $blockCount; $i++) { 
     $out[] = keygen($digitsCount); 
    } 
    return implode('-', $out); 
} 

function codeOutput($codeCount, $blockCount, $digitsCount){ 
    for ($i=0; $i < $codeCount; $i++) { 
     $out[] = keygenLong($blockCount, $digitsCount); 
    } 
    return $out; // this one is still an array 
} 

$data = codeOutput($codeCount, $blockCount, $digitsCount); 
その後

ファイルにデータを書き込むための...

file_put_contents('keys.txt', implode(PHP_EOL, $data)); 

または出力HTML

echo implode('<br>', $data); 
関連する問題