Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何根据每个文件中的特定行按字母顺序对文件数组进行排序_Php_Arrays_Sorting_Foreach - Fatal编程技术网

Php 如何根据每个文件中的特定行按字母顺序对文件数组进行排序

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

我有很多txt文件,其中存储了普通数据。 所有txt文件都存储在data/articles目录中。 txt文件如下所示:

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  
}