回答編集履歴

1

回答を加筆修正

2019/12/11 03:41

投稿

XNXSXMXR
XNXSXMXR

スコア239

test CHANGED
@@ -1,3 +1,29 @@
1
+ まず、プログラムの先頭行(<?phpの次の行)に、以下を記述してください。
2
+
3
+
4
+
5
+ ```PHP
6
+
7
+ // 全てのエラーを拾う
8
+
9
+ error_reporting(E_ALL);
10
+
11
+
12
+
13
+ // エラーを出力する
14
+
15
+ ini_set('display_errors', "On");
16
+
17
+ ```
18
+
19
+
20
+
21
+ これで、どこが悪いのかPHPがエラーメッセージを出してくれます。
22
+
23
+
24
+
25
+
26
+
1
27
  75行目のliタグを出力している部分で使われている $namecnt ですが、この中身には「徳川 家康(4)」みたいな文字列がセットされているかと思います。
2
28
 
3
29
 
@@ -29,3 +55,55 @@
29
55
  これで、名前とcntを分けることができました。
30
56
 
31
57
  あとは表示部分でも、キー名(名前を出したいときは「name」、cntを出したいときは「cnt」)を指定すると表示できます。
58
+
59
+
60
+
61
+ ### 表示部分
62
+
63
+
64
+
65
+ > foreach($namearray as $namecnt){
66
+
67
+
68
+
69
+ この次の行に、以下のコードを追加してみてください。
70
+
71
+ ```PHP
72
+
73
+ print_r($namecnt);
74
+
75
+ ```
76
+
77
+
78
+
79
+ そうすると、以下のような表示が現れると思います。
80
+
81
+ > Array ( [name] => 岩鬼正美 [cnt] => 1 )
82
+
83
+
84
+
85
+ これは$namecntの中身を表示しており、さきほど変更した$line['name']と$line['cnt']の値がそれぞれセットされているのがわかると思います。
86
+
87
+
88
+
89
+ 分けて表示したい要望ですので、$namecnt['name']と$namecnt['cnt']を指定してあげれば表示できます。
90
+
91
+
92
+
93
+ ```PHP
94
+
95
+ echo "<li><a href=\"siteurl/meta?key=".$namecnt['name']."\">".$namecnt['name']." <span class'hoge'>".$namecnt['cnt']."</span></a></li>\n";
96
+
97
+ ```
98
+
99
+
100
+
101
+ ### preg_replace()について
102
+
103
+
104
+
105
+ > $name = preg_replace('/(\d*)/','',$namecnt );
106
+
107
+
108
+
109
+ これは元々$namecnt に「岩鬼正美(1)」とセットされていた文字列から、カッコ()と数字を削除(空文字に置換)する処理ですので、今回の変更によって不要となります。