我对PHP很陌生,所以这可能已经回答了。但是,我找不到类似的问题答案,所以在这里:
我有一个名为“frozen.txt”的模板文件。此文件包含冻结项目编号列表。如下所示:
23476
23829个
26974个
我还有大约20个代表每日销售数据的文件:“frozen-4-1.txt”,“frozen-4-2.txt”,“frozen-4-3.txt”等。每个txt文件包含3个由“;”分隔的列。第一列与“frozen.txt”完全相同。第二列表示以“每个”为单位的库存号,第三列表示以“Box”为单位的库存号。例如,“frozen-4-1.txt”看起来像:
23476; 30; 3
23829; 100; 10
26974; 50; 5
“frozen-4-2.txt”看起来像
23476; 20; 2
23829; 90; 9
26974; 40; 4个
“frozen-4-3.txt”看起来像
23476; 10; 1
23829; 60; 6
26974; 20; 2个
现在我要创建两个名为“outputeach.dat”和“outputbox.dat”的新文件。这个文件使用“frozen.txt”作为其第一列,然后使用每日数据txt文件的第二列和第三列作为新的列分别。(以“;”分隔)因此,“outputeach.dat”看起来像:
23476; 30; 20; 10
23829; 100; 90; 60
26974:50; 40; 20
和“outputbox.dat”看起来像
23476; 3; 2; 1个
23829; 10; 9; 6
26974:5; 4; 2
这是我的代码试图实现这一点,但我被困在程序的最后
<?php
include('path.php');
$space = "\r\n"; // For NewLine ...
$frzlist = array();
$readfrz = fopen("C:/purchase/dailydata/frozen.txt", "r");
while (!feof($readfrz)) {
$foo2 = fgets($readfrz);
$trufoo2 = trim( preg_replace( '/\s+/', ' ', $foo2 ) ); // get rid of new line in $foo2
$frzlist[] = $trufoo2; // read all the frozen item list into array $frzlist
}
fclose($readfrz);
if ($handle = opendir(BASE_PATH)){
while (false !== ($file = readdir($handle)))
{
if ($file == "." || $file == ".."){}else
{
if(!strstr($file,"txt"))
{
continue; //Skip as file is not txt format
}
$s = explode("-",$file);
$prefix = $s[0];
$prefix1 = $s[1];
$prefix2 = $s[2];
//echo $prefix . " "; // representing catogory
//echo $prefix1 . " "; // representing month
//echo $prefix2 . " "; // representing day
}
}
}
for($i=1 ; $i<32; $i++){ //loop through one month data
$days = $prefix1 . "-" . $i ;
$file1 = BASE_PATH . $prefix . "-" . $prefix1 . "-" . $i . ".txt" ;
//echo $file1 . "\n";
//echo $days . "\n";
if (file_exists($file1)) {
$fileopen1 = fopen($file1,"r");
while (!feof($fileopen1)) {
$foo = fgets($fileopen1);
$members1[] = $foo; // read all the contents into array $members1
}
$outputfrzpri = array();
$outputfrzsec = array();
if($prefix = "frozen"){
foreach ($members1 as $x1){
$pieces1 = explode(";", $x1);
CODE needs help here
CODE needs help here
}
}
}
}
?>
非常感谢您的建议
答案 0 :(得分:1)
看起来你正在做一个文本数据库。但是,我认为它可以让您的生活更容易使用SQL,因为过去已经完成了您可能想要的所有信息。
我相信你已付出了很多努力来实现它并且它不会丢失。你对PHP的了解越多,你就会越了解,已经有很多东西可以简化你的生活,但我认为你存储这些信息的方式是错误的。
SQL代表结构化查询语言。互联网上有很多资源,周围有很多社区。
问候,
答案 1 :(得分:0)
一些建议:
而不是$frzlist[] = $trufoo2;
创建数组的关联数组来填充数据:
$frzlist[$trufoo2] = array(
'each' => array(),
'box' => array(),
);
有时分隔分号周围有空格,您可以使用preg_split
删除它们:
$pieces1 = preg_split("/\s*;\s*/", $x1);
将数据分配给相应的数组:
$key = $pieces1[0];
$frzlist[$key]['each'][] = $pieces1[1];
$frzlist[$key]['box'][] = $pieces1[2];
遍历每个文件的主数组创建行
foreach($frzlist as $key => $values){
$eachline = $key .';'.implode(';', $values['each']);
$boxline = $key .';'.implode(';', $values['box']);
//write to file
}