对于平面文件博客系统,数据存储在.txt
文件中。
.txt
文件如下所示(彼此之间三行):
id_1234 // identity
cars // title
5 // number of likes
使用foreach循环,我要输出 id ,标题和顶赞 因此,foreach的输出应如下所示:
id_1234 cars 5
这是我到目前为止所做的:
$likes_array = array();
$files = glob("data/articles/*.txt"); // read all files in dir articles
foreach($files as $file) { // Loop through the files
$lines = file($file, FILE_IGNORE_NEW_LINES);
$id_line = $lines[0]; // id line
$title_line = $lines[1]; // title line
$like_line = $lines[2]; // likes line
$likes_array[$id_line][$title_line] = $like_line;
}
print_r($likes_array);
给我这样的输出:
Array
(
[id_123] => Array
(
[cars] => 4
)
[id_456] => Array
(
[sports] => 5
)
[id_789] => Array
(
[animals] => 8
)
)
要输出数据,我使用以下foreach循环:
foreach($likes_array as $key => $val) {
echo $key.' '.key($val).' '.current($val).'<br />';
}
到目前为止一切都很好;它给了我我想要实现的输出。
但是我想基于喜欢按降序排序数组(最喜欢在顶部)。我没有成功
我尝试了arsort()
,但没有结果,我也尝试了usort
,如下所示:
usort($likes_array, function ($a, $b) {
return reset($b) - reset($a);
});
最后一个做以降序对输出进行排序,但是我松了 id's
Array
(
[0] => Array
(
[animals] => 8
)
[1] => Array
(
[sports] => 5
)
[2] => Array
(
[cars] => 4
)
)
所以:如何根据喜欢按降序对输出进行排序?也许这不是创建我上面做的数组的正确方法?