回答編集履歴

2

続きも書いた

2015/12/04 16:29

投稿

miyabi-sun
miyabi-sun

スコア21158

test CHANGED
@@ -14,6 +14,8 @@
14
14
 
15
15
  ```PHP
16
16
 
17
+ <?php
18
+
17
19
  $path = "./hoge/";
18
20
 
19
21
  $files = array_filter(
@@ -29,3 +31,125 @@
29
31
  );
30
32
 
31
33
  ```
34
+
35
+
36
+
37
+ ---
38
+
39
+
40
+
41
+ 更に要求ベースまで掘り下げてみましょう。
42
+
43
+ PHPは初期の段階ではHomePageプリプロセッサという名称から始まった程、
44
+
45
+ HTMLとの親和性が高い事が特徴です。
46
+
47
+
48
+
49
+ 好き嫌いははっきり別れますが、
50
+
51
+ 個人的には下記のようなテンプレート的な書き方を好んで使ってます。
52
+
53
+ その場合、Stringの配列のまま出力箇所まで持っていくと良いです。
54
+
55
+
56
+
57
+ ```PHP
58
+
59
+ <?php
60
+
61
+ // 配列を準備
62
+
63
+ $path = 'hoge';
64
+
65
+ $files = ['20151204/112345.log', '20151203/102345.log'];
66
+
67
+ ?>
68
+
69
+ <?php foreach($files as $file): ?>
70
+
71
+ <li><a href="<?= $path.'/'.$file ?>"><?= $file ?></a></li>
72
+
73
+ <?php endforeach; ?>
74
+
75
+ ```
76
+
77
+
78
+
79
+ ---
80
+
81
+
82
+
83
+ 最後にこの2つを使ってみます。
84
+
85
+
86
+
87
+ ```PHP
88
+
89
+ <?php
90
+
91
+ $path = "./hoge";
92
+
93
+ $dirs = array_filter(
94
+
95
+ scandir($path, SCANDIR_SORT_DESCENDING),
96
+
97
+ function($dir) use($path){
98
+
99
+ if (in_array($dir, ['.', '..']) {
100
+
101
+ return false;
102
+
103
+ }
104
+
105
+ return is_dir($path.'/'.$dir);
106
+
107
+ }
108
+
109
+ );
110
+
111
+ $files = [];
112
+
113
+ foreach ($dirs as $dir) {
114
+
115
+ $child_path = $path.'/'.$dir;
116
+
117
+ $items = scandir($child_path, SCANDIR_SORT_DESCENDING);
118
+
119
+ foreach ($items as $file) {
120
+
121
+ if (in_array($file, ['.', '..']) {
122
+
123
+ continue;
124
+
125
+ }
126
+
127
+ if (is_dir($child_path.'/'.$file) {
128
+
129
+ continue;
130
+
131
+ }
132
+
133
+ $files[] = $dir.'/'.$file;
134
+
135
+ }
136
+
137
+ }
138
+
139
+ ?>
140
+
141
+
142
+
143
+ <?php foreach($files as $file): ?>
144
+
145
+ <li><a href="<?= $path.'/'.$file ?>"><?= $file ?></a></li>
146
+
147
+ <?php endforeach; ?>
148
+
149
+ ```
150
+
151
+
152
+
153
+ ちょっとごつくなってしまいましたね。。。。
154
+
155
+ 回答の一案とでも考えてください。

1

syntax errorを修正

2015/12/04 16:29

投稿

miyabi-sun
miyabi-sun

スコア21158

test CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
 
4
4
 
5
- 降順にも引数一撃で出来るので一発解決ですね!
5
+ 昇順にも降順にも引数一撃で出来るので一発解決ですね!
6
6
 
7
7
  PHPはビルトイン関数、特に配列やテキスト操作が強力なので探してみて下さい。
8
8
 
@@ -22,7 +22,7 @@
22
22
 
23
23
  function($file){
24
24
 
25
- return !in_array($file, ['.', '..'])
25
+ return !in_array($file, ['.', '..']);
26
26
 
27
27
  }
28
28