我正在尝试使用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上发生致命错误....
答案 0 :(得分:0)
我追查了这个问题,正如预期的那样,这是我自己的愚蠢行为!
我为while($ sub2&lt; $ sub2m)循环输入了错误的变量。
它应该是while($ sub2&lt; $ sub2num)