我正在尝试使用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)