php - 使用一些记录创建文件集
问题描述
我正在尝试创建一组文件。每个文件有 100 条记录,如果超过 10 条记录将有 10 条记录,它将创建新文件。并将下一个数据存储在新文件中
创建文件,但所有数据都在 1 个文件中。
<?php
function wh_BATCH($Batch_msg,$count)
{
$log_filename = "BATCH";
if (!file_exists($log_filename))
{
// create directory/folder uploads.
mkdir($log_filename, 0777, true);
}
if($count == 5)
{
$log_file_data = $log_filename.'/BATCH_1.txt';
file_put_contents($log_file_data, $Batch_msg . "\n", FILE_APPEND);
}
else
{
$log_file_data = $log_filename.'/BATCH_' . date('d-M-Y') . '.txt';
file_put_contents($log_file_data, $Batch_msg . "\n", FILE_APPEND);
}
}
for($i=0;$i<=100;$i++)
{
wh_BATCH("hello world ".$i,5);
}
?>
输出
将创建 10 个文件 BATCH_1.txt,********,BATCH_10.txt,其中 BATCH_1 将具有
BATCH_1.txt Hello world 1 to Hello world 10
BATCH_2.txt Hello world 11 to Hello world 20
BATCH_3.txt Hello world 21 to Hello world 30
* * *
BATCH_10.txt Hello world 91 to Hello world 100
请建议
已编辑
<?php
for($i=1;$i<=100;$i++)
{
wh_BATCH("hello world ".$i, $i);
}
function wh_BATCH($Batch_msg,$count)
{
$log_filename = "BATCH";
if (!file_exists($log_filename))
{
// create directory/folder uploads.
mkdir($log_filename, 0777, true);
}
$number = (float)$count/10;
$number++;
$log_file_data = $log_filename.'/BATCH_'.$number.'.txt';
file_put_contents($log_file_data, $Batch_msg . "\n", FILE_APPEND);
}
?>
上面的文件应该只有 10 个文件 每个文件应该有 10 条记录 BATCH_1.txt --- BATCH_10.txt
解决方案
for($i=0;$i<=100;$i++)
{
wh_BATCH("hello world ".$i,5);
}
在此 FOR 中,您始终将 5 作为第二个参数传递。
if($count == 5)
{
$log_file_data = $log_filename.'/BATCH_1.txt';
file_put_contents($log_file_data, $Batch_msg . "\n", FILE_APPEND);
}
这就是为什么 wh_BATCH() 函数的这一部分总是被执行的原因。此部分始终附加到 BATCH_1.txt
为了实现你的目标,你应该这样做
首先,将 i 的值传递给 wh_BATCH() 函数
for($i=0;$i<=100;$i++)
{
wh_BATCH("hello world ".$i, $i);
}
然后,在函数内部,你可以做这样的事情
$number = intVal($count/10);
$number++;
$log_file_data = $log_filename.'/BATCH_'.$number.'.txt';
file_put_contents($log_file_data, $Batch_msg . "\n", FILE_APPEND);
这将是功能
function wh_BATCH($Batch_msg,$count)
{
$log_filename = "BATCH";
if (!file_exists($log_filename))
{
// create directory/folder uploads.
mkdir($log_filename, 0777, true);
}
$number = intVal($count/10);
$number++;
$log_file_data = $log_filename.'/BATCH_'.$number.'.txt';
file_put_contents($log_file_data, $Batch_msg . "\n", FILE_APPEND);
}
在 PHP 5.6 上测试的工作代码
<?php
function wh_BATCH($Batch_msg,$count)
{
$log_filename = "BATCH";
if (!file_exists($log_filename))
{
// create directory/folder uploads.
mkdir($log_filename, 0777, true);
}
$number = intVal($count/10);
$number++;
$log_file_data = $log_filename.'/BATCH_'.$number.'.txt';
file_put_contents($log_file_data, $Batch_msg . "\n", FILE_APPEND);
}
for($i=1;$i<=100;$i++)
{
wh_BATCH("hello world ".$i, $i);
}
推荐阅读
- python - 如何在 pysimplegui 中调整列表框的大小?
- pandas - 具有自定义聚合函数和 dtype 条件的 pandas agg:列静默消失
- php - html表单不显示值
- python - pandas plot with twiny top xticks 锚调整
- python - 在 matplotlib 中的图形 2D 线上绘制 2D 线
- javascript - 在 Web iframe 窗口中访问 TS 命名空间
- c# - 使愤怒的小鸟在统一上看起来很像。发现了一个错误,仍然无法修复它
- spring - 无法从配置服务器获取属性值
- python - 特定字头 qtableWidget 中的富文本
- python - Python 3 - 从字典对绘制 mapplotlib 图