php - 如何使用 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);
}
}
解决方案
由于我确认保存到文件本身不是问题,因此我发布了 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);
推荐阅读
- java - 在模块 core-1.1.0-runtime.jar 中找到重复的类 android.support.v4.app.INotificationSideChannel
- database - 如何编辑/修改或更改计划的每日 csv 文件上传到 Data Studio 的数据?
- ios - tabBarController 选择的索引在 viewController [Swift] 中不起作用
- reactjs - 使用更新不可变助手我得到 eslint 错误:在引用前一个状态时在 setState 中使用回调
- laravel - Laravel:从单个路由中删除“api”前缀
- firebase - 类颤振中未定义方法'SignInWithTwitter
- javascript - 我想根据悬停事件将动画选项卡添加到网格元素
- javascript - 如何在 javascript 谷歌地图 API 上用米显示 geojson 数据
- c++ - 我试图通过引用交换两个值没有发生错误但编译器抛出一些消息
- javascript - 闭包、递归和 settimeout - 记录空数组