Php 如何根据每个文件中的特定行按字母顺序对文件数组进行排序
我有很多txt文件,其中存储了普通数据。 所有txt文件都存储在data/articles目录中。 txt文件如下所示:Php 如何根据每个文件中的特定行按字母顺序对文件数组进行排序,php,arrays,sorting,foreach,Php,Arrays,Sorting,Foreach,我有很多txt文件,其中存储了普通数据。 所有txt文件都存储在data/articles目录中。 txt文件如下所示: id_20200430223049 // id line friends // category line uploads/mainimage_5eab357970b0d.jpeg // image line officials wanted
id_20200430223049 // id line
friends // category line
uploads/mainimage_5eab357970b0d.jpeg // image line
officials wanted // title line
comment<br />comment<br />comment // message line
30 apr 2020 22:30 // date line
jack // author line
但是如何输出所有带有排序标题的锚?此代码基于您拥有的第一个代码构建一个数组,但将每个条目添加到一个数组中,由blog_id和标题作为值编制索引。然后使用uasort进行排序,同时保留键,并使用strcasecmp进行不区分大小写的排序。然后可以为链接输出此数组
$blog_data = [];
foreach($blogfiles as $blogfile){
$lines = file($blogfile, FILE_IGNORE_NEW_LINES); // filedata into an array
$blog_data [$lines[0]] = $lines[3];
} // end foreach
uasort($blog_data, 'strcasecmp'); // Sort case insensitive
foreach ( $blog_data as $blog_id => $blog_title ) { ?>
<a href="admin.php?page=<?php echo $blog_id; ?>"><?php echo $blog_title; ?></a><br />
<?php
}
$handle = @fopen($blogfile, "r");
if ($handle) {
$lines = file($blogfile, FILE_IGNORE_NEW_LINES); // file in to an array
$title_line = $lines[3];
if(strpos(strtolower($title_line)) !== FALSE) { // strtolower; category word not case sensitive
$title_lines[] = $title_line;
}
fclose($handle);
}
sort($title_lines);
print_r($title_lines); // now the titles are sorted!
$blog_data = [];
foreach($blogfiles as $blogfile){
$lines = file($blogfile, FILE_IGNORE_NEW_LINES); // filedata into an array
$blog_data [$lines[0]] = $lines[3];
} // end foreach
uasort($blog_data, 'strcasecmp'); // Sort case insensitive
foreach ( $blog_data as $blog_id => $blog_title ) { ?>
<a href="admin.php?page=<?php echo $blog_id; ?>"><?php echo $blog_title; ?></a><br />
<?php
}