之前的各种修改测试就不说了,反正就是瞎蒙,毕竟咱也不懂这php语言。注意力都集中放在了14楼的函数上,最终证明这是正确的。当把下面代码中“">>".$v1['name']”(获取到的应该是分区名)和“" |-".$v2['name']”(获取到的应该是版块名)里面的“name”换成“fid”后,终于可以看到分区和版块的cateid和fid值了。
- foreach ((array)$catedb as $k1 => $v1) {
- $v1['name'] = htmlspecialchars(strip_tags($v1['name']),ENT_QUOTES);
- $top_3[$v1['fid']] = ">>".$v1['name'];
- if (in_array($currentForum['fid'],$catedbs[$v1['fid']])) {
- $top_2[$v1['fid']] = ">>".$v1['name'];
- }
- foreach ((array)$forumdb[$v1['fid']] as $k2 => $v2) {
- $v2['name'] = htmlspecialchars(strip_tags($v2['name']),ENT_QUOTES);
- if ($v2['fid'] == $currentForum['fid']) {
- $top_1[$v2['fid']] = " |-".$v2['name'];
- }
- if (in_array($currentForum['fid'],$catedbs[$v1['fid']])) {
- $top_2[$v2['fid']] = " |-".$v2['name'];
- }
于是判定,分区和版块名不显示是由于前面处理这些字符串的语句有问题(本段代码里就是第2行和第8行),具体就是htmlspecialchars和strip_tags两个函数。好在,换了个函数名称就解决了问题,如果函数本身的代码有问题,那改起来可能就麻烦了。