簡體   English   中英

如何使用 PHP 將三角形系列打印到文件上?

[英]How do I print the triangular series onto a file using PHP?

我要做的是創建一個名為triangular_10.txt的文件,其中文件名中的數字是用戶輸入的數字。 從那里我希望文本文件具有三角形的數字系列。 因此,如果用戶輸入 10,它將顯示三角形系列的前 10 個數字。 到目前為止,文件名更改正在起作用。

我用於 PHP 的算法在這里: http://www.codecodex.com/wiki/Calculate_a_triangle_number

例如。 用戶輸入txt文件中的結果是triangular series = [1, 3, 6, 10, 15, 21, 28, 36, 45]

這是我到目前為止所擁有的,但我沒有任何運氣! 目前它只將我輸入的數字寫入txt文件,沒有別的!

        $number = $_POST['number-entered'];
        foreach(range(1, 1000) as $i) {
            $triangle_numbers[] = $i * ($i + 1) / 2;
        }

        //make a file
        $contents = fopen('gs://a1-task22020.appspot.com/triangular_'.$number. ".txt", "w");
        fwrite($contents, $number);

        //open the file
        $contents = fopen('gs://a1-task22020.appspot.com/'.$contents, 'w');

        // re-open the document if you put something in it
        fwrite($contents, $number);

        fclose($contents);
    }
}

由於我確認保存到文件本身不是問題,因此我發布了 3 個解決方案

$number = intval($_POST['number-entered']); // convert target number to string;
$triangle_numbers = [];

// SOLUTION 0 (no change to your loop, but you should use something else, range(1,1000) is very bad there)
foreach (range(1, 1000) as $i) {
    $triangle_numbers[] = $i * ($i + 1) / 2;
}
$triangle_numbers = array_slice($triangle_numbers,0,$number);

// SOLUTION 1:
foreach ( range(1, $number) as $i ) { //we don't need to go all the way to 1000 if user only wants 5, and if they want 2000 we are covered
$triangle_numbers[] = $i * ( $i + 1 ) / 2;
}


// SOLUTION 2 
for ($i = 1; $i<=$number; $i++) { //it's as above, i just changed the loop
    $triangle_numbers[] = $i * ($i + 1) / 2;
}

// rest is pretty much the same
//edit, i removed weird reopen part. it made you write to the same line over and over
        $contents = fopen('here.txt', "w");
    fwrite($contents, $number . "\n");
    fwrite($contents, implode(', ', $triangle_numbers)); // read https://www.php.net/manual/en/function.implode.php
    fwrite($contents, "\n$number\n");
    fclose($contents);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM