2017-11-13 16 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);