首页 > 解决方案 > 如何使用 PHP 将三角形系列打印到文件上?

问题描述

我要做的是创建一个文件名triangular_10.txt,其中文件名中的数字是用户输入的数字。从那里我希望文本文件具有三角形的数字系列。因此,如果用户输入 10,它将显示三角形系列的前 10 个数字。到目前为止,文件名更改正在起作用。

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

例如。用户输入 10。文件中的结果是txt文件中的前 10 个数字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);
    }
}

标签: php

解决方案


由于我确认保存到文件本身不是问题,因此我发布了 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);

推荐阅读