我有一个包含1-25个php文件的文件夹,每个文件标题为1.php
2.php
等。
我希望使用php以降序回显页面上数组中每个文件的内容。
我遇到的问题是它当前正以相反的顺序输出,当它达到10时,它会将11放在1旁边。这不是人类将如何解释的逻辑系统。
我一直在看这个:http://php.net/manual/en/array.sorting.php
并且我尝试arsort
,krsort
,natcasesort
和rsort
几乎没有成功地按照从最高编号开始的降序排列十次后对数组进行逻辑排序。
完整代码如下:
$articles = glob("$_SERVER[DOCUMENT_ROOT]/assets/news/overview/*.php");
if(count($articles)) {
rsort($articles);
foreach($articles as $article) {
$article = basename($article);
include("$_SERVER[DOCUMENT_ROOT]/assets/news/overview/$article");
}
}
else {
echo "Sorry, no articles.";
}
任何人都可以帮我完成这个PHP脚本吗?谢谢!
答案 0 :(得分:1)
我会用这样的东西:
if(count($articles)) {
natsort($articles);
$articles = array_reverse($articles);
}
示例:
$a = array(
"1.php",
"12.php",
"10.php",
"3.php",
"4.php",
"5.php",
"11.php",
"2.php",
"21.php",
"13.php",
"22.php");
natsort($a);
$a = array_reverse($a);
print_r($a);
结果:
Array (
[0] => 22.php
[1] => 21.php
[2] => 13.php
[3] => 12.php
[4] => 11.php
[5] => 10.php
[6] => 5.php
[7] => 4.php
[8] => 3.php
[9] => 2.php
[10] => 1.php
)
答案 1 :(得分:0)
它按文件名排序元素,文件名是字符串,而不是数字。您应该将没有扩展名的文件名转换为整数,并将它们添加到新数组中。然后按索引对数组进行反向排序。
$sortedArticles = array();
foreach($articles as $article) {
$sortedArticles[(int)basename($article)] = $article;
}
uksort($sortedArticles, function($a, $b) {
return $b - $a
});
for($i = 1; $i <= count($articles); $i++) {
include("$_SERVER[DOCUMENT_ROOT]/assets/news/overview/$sortedArticles[$i]");
}