在echoif之后,php echo无法正常工作

时间:2015-01-22 15:07:49

标签: php mysql if-statement simplexml

我正在尝试使用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个选择,当顶部框填充时,当其他的是空的时,一系列线(最多400+)的格式为### - #### - #### - ##应该出现## - ####。

编辑2: 要查看错误: 1.设置选择“模块”为任何东西 2.将选择子列表1和子列表2设置为空 3.确保顶部的数组有3个键(它代表一个名为filter-list的会话cookie,代表所选项目)

编辑3: 我已经找到了错误,但无法解决。

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

$ sub2m = $ xmls-&gt; module-&gt; {$ modnum} - &gt; sublist1-&gt; {$ sub1} - &gt; count();

我尝试了一个isnull catch但是然后在isnull上发生致命错误....

1 个答案:

答案 0 :(得分:0)

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

我为while($ sub2&lt; $ sub2m)循环输入了错误的变量。

它应该是while($ sub2&lt; $ sub2num)