1

我有 XML 文件。这是电影放映时间,我尝试解析。

<?xml version="1.0" encoding="UTF-8"?> <billboard>
    <genres>
<shows>
<show id="160576" film_id="5710" cinema_id="89" hall_id="241">
                <begin>2012-11-15</begin>
                <end>2012-11-18</end>
                <times>
                                            <time time="12:30:00">
                            <prices>30, 55</prices>
                            <note><![CDATA[]]></note>
                        </time>
                                            <time time="14:45:00">
                            <prices>30, 55</prices>
                            <note><![CDATA[]]></note>
                        </time>
                                            <time time="17:00:00">
                            <prices>30, 55</prices>
                            <note><![CDATA[]]></note>
                        </time>
                                            <time time="23:45:00">
                            <prices>30, 55</prices>
                            <note><![CDATA[]]></note>
                        </time>
                                    </times>
            </show>

我解析了我的 XML 并回显内容。但我无法回显“时间”和“价格”。插入代码后“//回显时间和价格//”脚本不起作用(白屏)。请帮助。PS对不起我的英语。

    $xmlstr = file_get_contents('test.xml');
$x = new SimpleXMLElement($xmlstr); 
$id_f = 89;
$cinema_id = "//show[@cinema_id=".$id_f."]";

$cinema=$x->xpath($cinema_id);
///////////////////////start/////////////////////////////////////////////
 foreach($cinema as $cinema)
      {
///////////string///////////////////
$begin_m = $cinema[0]->begin;
$end_m = $cinema[0]->end;
$film_id_m = $cinema[0]['film_id'];


/////////echo//////////////////////
echo "<b>Begin: </b>".$begin_m."<br>"; 
echo "<b>End: </b>".$end_m."<br>"; 
echo "<b>ID film: </b>".$film_id_m."<br>"; 
/////////echo time and price///

    foreach($cinema[0]->times->time as $k){
    $obj=current($k);
    $time_b = $obj['time']."\n";

    echo "Time: "$time_b."<br>";
    foreach($cinema[0]->times as $price){

    echo "Price: "$price[0]->pices."<br>";



}
/////////////   

    echo "<hr>";  
}

}
4

1 回答 1

1

您的代码中存在语法错误,导致 500 Internal Server 错误(显示白屏)。

语法错误 1:

echo "Time: ".$time_b."<br>";
          // ^ you were missing this

语法错误 2:

 echo "Price: ".$price[0]->pices."<br>";
            // ^ you were missing this

此外,在您的foreach循环中,您为元素分配了与您正在循环的数组相同的变量名称。这不会导致错误,但这意味着您的$cinema数组在循环后已死,它将被设置为最后一个元素的值。给它一个不同的名字:

foreach($cinema as $cinemaItem)

修复这些后,您的代码将按预期输出。将来您应该检查错误日志或打开错误,因为它们会告诉您语法错误在哪里:

error_reporting(E_ALL);
ini_set('display_errors', '1');
于 2012-11-21T07:46:58.437 回答