我有档案
animals.txt
fishes shark,tuna,salmon
birds parrot,pigeon
mammals cow,dog,cat
在每一行中,例如鱼类和鲨鱼之间都是制表。
我想得到这个输出:
<ul type="disc">
<li>fishes<br>
<ul type="disc">
<li>shark</li>
<li>tuna</li>
<li>salmon</li>
</ul>
</li>
<li>birds<br>
<ul type="disc">
<li>parrot</li>
<li>pigeon</li>
</ul>
</li>
<li>mammals<br>
<ul type="disc">
<li>cow</li>
<li>dog</li>
<li>cat</li>
</ul>
</li>
</ul>
我编写了简单的代码,但我不知道接下来我能做什么,有人可以帮我解决吗?
的index.php
$file = fopen('animals.txt', 'r');
while (!feof($file)) {
$line = fgets($file);
$a = explode(" ", $line);
$b = str_replace(",", " ", $a);
$c = explode(" ", $b);
print_r($b);
}
fclose($file);
?>
答案 0 :(得分:1)
如果您只是想阅读该文件而不是在其中写入,那么使用file
可能比fopen
更简单,因为它会创建一个行数组。
你想要双重爆炸每一行,一旦在制表上分开家庭和动物,第二次分裂<强>动物个别。
要创建一个包含家庭和动物的精美结构数组,请尝试以下操作并在不同步骤添加一些var_dump
以查看逻辑:
$file = file('animals.txt');
$groupedAnimals = array();
foreach ($file as $line) {
// First explode on tabulations
$line = explode("\t", $line);
$family = $line[0];
// Then explode on commas
$animals = explode(',', $line[1]);
foreach ($animals as $animal) {
$groupedAnimals[$family][] = $animal;
}
}
应该填充groupedAnimals
数组:
Array
(
[fishes] => Array
(
[0] => shark
[1] => tuna
[2] => salmon
)
[birds] => Array
(
[0] => parrot
[1] => pigeon
)
[mammals] => Array
(
[0] => cow
[1] => dog
[2] => cat
)
)
填充groupedAnimals
数组后,只需按照您的模板打印它们即可:
<ul type="disc">
<?php foreach ($groupedAnimals as $family => $animals): ?>
<li>
<?php echo $family ?>
<ul>
<?php foreach ($animals as $animal): ?>
<li><?php echo $animal ?></li>
<?php endforeach ?>
</ul>
</li>
<?php endforeach ?>
</ul>
答案 1 :(得分:1)
function xxAxx(){
$output='';
$file = fopen('animals.txt', 'r');
while (!feof($file))
{
$line = fgets($file);
//replace white spaces with a different delimiter
$line = preg_replace('/\s+/', '-', $line);
$line = trim($line);
// explode with your delemeter
$a = explode("-", $line);
$category = $a[0];
$categoryItems = explode(",", $a[1]);
$output .= "<li>".$category ."<br>";
$output .= "<ul type='disc'>";
foreach ($categoryItems as $item) {
$output .= '<li>'.$item.'</li>';
}
$output .= "</ul>";
$output .= "</li>";
}
fclose($file);
return $output;
}
?>
<ul type="disc">
<?php echo xxAxx(); ?>
</ul>