PHP echo 在 elseif 之后不起作用


php echo not working after elseif

我正在尝试使用simplexml从XML文件中提取数据。 我正在运行一系列 while 和 foreach 循环来挖掘我需要的东西。

但是,我

发现在elseif完成后,我无法再在屏幕上显示其他数据(echo和print_r不起作用)。 我已经在脚本末尾附加了一个 elseif 循环的代码片段。 请原谅糟糕的代码,我是一个相对较新的程序员。

elseif ($select_vars[1]==-1) {
    $sub1=0;
    $sub2=0;
    $temp_count = 1;
    $modnum=intval($select_vars[0]);
    $sub1m =  $xmls->module->{
        intval($select_vars[0])}
    ->count();
    while ($sub1 < $sub1m) {
        foreach($xmls->module->{
            $modnum}
        ->sublist1->{
            $sub1}
        as $hit2){
            $sub2m =  $xmls->module->{
                $modnum}
            ->sublist1->{
                $sub1}
            ->count();
            while ($sub2 < $sub2m) {
                foreach($xmls->module->{
                    $modnum}
                ->sublist1->{
                    $sub1}
                ->sublist2->{
                    $sub2}
                as $hit3){
                    $template_string .= $temp_count . " - " . (string)$hit3 . "<br/>";
                    $temp_count = $temp_count+1;
                    $template_list[] = (string)$hit3;
                }
                $sub2 = $sub2+1;
            }
            $sub1 = $sub1+1;
            $sub2 = 0;
        }
    }
    echo "sub1 = " . $sub1 . "<br/>";
}
echo "here <br/><br/>".$template_string;
print_r ($template_list);
$template_list = array_unique($template_list);
sort($template_list);
print_r ($template_list);

我知道循环提取正确的信息,因为我可以在各个循环中的任何位置回显,除了 esleif 右括号之后。

代码的实时副本可在以下网址获得:http://www.aquilasolutions.us/software/templates/pages/filter-list.php

编辑:

输出应该是 3 个选择,当顶部框被填满时,当其他框为空时,应该出现一系列格式为

### - ####-#-#-##

编辑2:要查看错误,请执行以下操作:1. 将选择"模块"设置为任何内容2. 将选择子列表 1 和子列表 2 设置为空3. 确保顶部的数组有 3 个键(它代表一个名为过滤器列表的会话 cookie,代表所选项目)

编辑3:我已经追踪了错误,但无法解决它。

我的日志中有一个致命错误(致命错误:在 null 上调用成员函数 count()

):

$sub 2m = $xmls->模块->{$modnum}->sublist1->{$sub 1}->count();

我尝试放入一个 isnull 捕获,但随后 isnull 上出现了致命错误......

我追踪了这个问题,正如预期的那样,这是我自己的愚蠢!

我在 while ($sub 2 <$sub 2m) 循环中输入了错误的变量。

它应该是在($sub 2 <$sub 2num)