我将我的sql数据库导出到text(database.txt)文件中,如下所示:
id|name_sname|identity|address|region|hours|destination|price;
--------------------------------------------------------------------
1|Ezra Mod|123456789|husi, stanilesti, vaslui|HUSI - IASI|20:00|HUSI|100;
2|Ezra Mod|123456789|husi, stanilesti, vaslui|HUSI - IASI|20:00|HUSI|100;
3|Ezra Mod|123456789|husi, stanilesti, vaslui|HUSI - IASI|20:00|HUSI|100;
4|Ezra Mod|123456789|husi, stanilesti, vaslui|HUSI - IASI|20:00|HUSI|100;
5|Ezra Mod|123456789|husi, stanilesti, vaslui|HUSI - IASI|20:00|HUSI|100;
6|Ezra Mod|123456789|husi, stanilesti, vaslui|HUSI - IASI|20:00|HUSI|100;
现在我想用php读取这个文件并将每行的结果放在另一个文件中:contracts.php?id = 1,其中id需要来自我的 database.txt , 我尝试在这种模式下读取database.txt:
$data = file_get_contents("database.txt"); //read the file
$convert = explode("|", $data); //create array separate by new line
foreach($convert_row as $rand) {
echo $rand;
echo "<br /><hr /></br />";
}
在为#34; |&#34;之前/之后为每个值创建变量需要做些什么?每一排?这样的事情: $ id,$ name,....
答案 0 :(得分:2)
我认为保留数据库对于性能和功能来说都是更好的方法。
您的问题从第二行开始,评论不正确:
$convert = explode("|", $data); //create array separate by new line
这不是新线的分裂。它按|
拆分,这会使您的列分开但是无法找到列以此方法结束/启动的位置。您需要拆分新行或使用file()
来读取文件。然后,您可以迭代数据并构建变量或数组。
$lines = explode(PHP_EOL, $data);
foreach($lines as $key => $line){
$convert = explode("|", $line); //create array separate by new line
if($key == 0) {
foreach($convert as $column_name) {
$columns[] = $column_name;
}
}
if(is_numeric($convert[0])) {
$data[$columns[0]][] = $convert[0];
}
}
is_numeric
将忽略
文件
0
中的将是id
所以它应该始终是一个整数。
答案 1 :(得分:1)
这是您的数据库样式的解决方案: 实例:https://3v4l.org/Xhr68
<?php
$data = file_get_contents("database.txt"); //read the file
$rows = explode("\n", $data); //create array separate by new line
$rows = array_map("trim", $rows); // for removing any unwanted space
$rowCount = count($rows); // Count your database rows
function CountCol($data){
$col = explode("|", $data);
return count($col);
}
// Creating array from our text database
// in our database first two rows are not needed so I am skipig this
// by using i = 2
// and $rowCount -1 because of our array start from 0 but count start from 1
// adding $id[$i-2] and like other because of we have started our first loop from 2 and I want to
// create my new array starting from 0 .
for ($i=2; $i <$rowCount-1 ; $i++) {
for ($j=0; $j < CountCol($rows[$i]) ; $j++) {
$column = explode("|", $rows[$i]);
$id[$i-2] = $column[0];
$name_sname[$i-2] = $column[1];
$identity[$i-2] = $column[2];
$address[$i-2] = $column[3];
$region[$i-2] = $column[4];
$hours[$i-2] = $column[5];
$destination[$i-2] = $column[6];
$price[$i-2] = $column[7];
}
}
// let's print our data
// I am using 3 here because of we have no need first 2 rows and our array start from 0
for ($i=0; $i < $rowCount-3 ; $i++) {
echo "ID: ".$id[$i] ."<br>";
echo "name_sname: ".$name_sname[$i]."<br>";
echo "identity: ".$identity[$i] ."<br>";
echo "address: ".$address[$i] ."<br>";
echo "region: ".$region[$i] ."<br>";
echo "hours: ".$hours[$i] ."<br>";
echo "destination: ".$destination[$i] ."<br>";
echo "price: ".$price[$i] ."<br>";
}
//
// get it like below
echo "printing information using id number <br>";
echo $name_sname[1]; // here 1 is row number or id number
echo $name_sname[2];
echo "<br>";
?>
//但我喜欢创建如下的数据库。这意味着不需要前两行列名和 - 行
1|Ezra Mod1|123456789|husi, stanilesti, vaslui|HUSI - IASI|20:00|HUSI|100;
2|Ezra Mod2|123456789|husi, stanilesti, vaslui|HUSI - IASI|20:00|HUSI|100;
3|Ezra Mod3|123456789|husi, stanilesti, vaslui|HUSI - IASI|20:00|HUSI|100;
4|Ezra Mod4|123456789|husi, stanilesti, vaslui|HUSI - IASI|20:00|HUSI|100;
5|Ezra Mod5|123456789|husi, stanilesti, vaslui|HUSI - IASI|20:00|HUSI|100;
6|Ezra Mod6|123456789|husi, stanilesti, vaslui|HUSI - IASI|20:00|HUSI|100;
如果您创建如下所示的数据库是解决方案。
<?php
$data = file_get_contents("database.txt"); //read the file
$rows = explode("\n", $data); //create array separate by new line
$rows = array_map("trim", $rows); // for removing any unwanted space
$rowCount = count($rows); // Count your database rows
function CountCol($data){
$col = explode("|", $data);
return count($col);
}
// Creating our array database
for ($i=0; $i <$rowCount-1 ; $i++) {
for ($j=0; $j < CountCol($rows[$i]) ; $j++) {
$column = explode("|", $rows[$i]);
$id[$i] = $column[0];
$name_sname[$i] = $column[1];
$identity[$i] = $column[2];
$address[$i] = $column[3];
$region[$i] = $column[4];
$hours[$i] = $column[5];
$destination[$i] = $column[6];
$price[$i] = $column[7];
}
}
// now we have full control and everything dynamic let's print
for ($i=0; $i < $rowCount-1 ; $i++) {
echo "ID: ".$id[$i] ."<br>";
echo "name_sname: ".$name_sname[$i]."<br>";
echo "identity: ".$identity[$i] ."<br>";
echo "address: ".$address[$i] ."<br>";
echo "region: ".$region[$i] ."<br>";
echo "hours: ".$hours[$i] ."<br>";
echo "destination: ".$destination[$i] ."<br>";
echo "price: ".$price[$i] ."<br>";
}
//
// get it like below
echo "Tow number<br>";
echo $name_sname[1]; // here 1 is row number or id number
echo $name_sname[2];
?>