SimpleXML 和 foreach
SimpleXML and foreach
我在使用 PHP 和 XML 时遇到了一些问题。如果我需要使用 FOREACH
从 XML 源中过滤特定参数并且特定块不存在,则结果为空。但我需要这样显示:"No active service".
<?php
$data = '<?xml version="1.0" encoding="utf-8" ?>
<note>
<to>
<form>pswA</form>
<heading>A</heading>
</to>
<to>
<form>pswB</form>
<heading>A</heading>
</to>
</note>';
$xml = simplexml_load_string($data);
foreach ($xml->to as $to){
if ($to->form == 'pswA' && $to->heading == 'A'){echo "allow";}
elseif ($to->form == 'pswA' && $to->heading == 'B'){echo "notallow";}
elseif ($to->form == 'pswA' && $to->heading == 'C'){echo "block";}
} // this exist and show (allow / notallow / block)
foreach ($xml->to as $to){
if ($to->form == 'pswC' && $to->heading == 'A'){echo "allow";}
elseif ($to->form == 'pswC' && $to->heading == 'B'){echo "notallow";}
elseif ($to->form == 'pswC' && $to->heading == 'C'){echo "block";}
} // but this is empty... how can I show some echo?
?>
是否可以在第二个foreach
不存在时显示消息?此示例中的更多内容和实时预览:https://3v4l.org/GhdRT
使用变量来跟踪您是否找到了活动服务。
$xml = simplexml_load_string($data);
$pswA_found = false;
foreach ($xml->to as $to){
if ($to->form == 'pswA' && $to->heading == 'A'){
echo "allow";
$pswA_found = true;
}
elseif ($to->form == 'pswA' && $to->heading == 'B'){
echo "notallow";
$pswA_found = true;
}
elseif ($to->form == 'pswA' && $to->heading == 'C'){
echo "block";
$pswA_found = true;
}
}
if (!$pswA_found) {
echo "No active service for pswA";
}
$pswC_found = false;
foreach ($xml->to as $to){
if ($to->form == 'pswC' && $to->heading == 'A'){
echo "allow";
$pswC_found = true;
}
elseif ($to->form == 'pswC' && $to->heading == 'B'){
echo "notallow";
$pswC_found = true;
}
elseif ($to->form == 'pswC' && $to->heading == 'C'){
echo "block";
$pswC_found = true;
}
}
if (!$pswC_found) {
echo "No active service for pswC";
}
我在使用 PHP 和 XML 时遇到了一些问题。如果我需要使用 FOREACH
从 XML 源中过滤特定参数并且特定块不存在,则结果为空。但我需要这样显示:"No active service".
<?php
$data = '<?xml version="1.0" encoding="utf-8" ?>
<note>
<to>
<form>pswA</form>
<heading>A</heading>
</to>
<to>
<form>pswB</form>
<heading>A</heading>
</to>
</note>';
$xml = simplexml_load_string($data);
foreach ($xml->to as $to){
if ($to->form == 'pswA' && $to->heading == 'A'){echo "allow";}
elseif ($to->form == 'pswA' && $to->heading == 'B'){echo "notallow";}
elseif ($to->form == 'pswA' && $to->heading == 'C'){echo "block";}
} // this exist and show (allow / notallow / block)
foreach ($xml->to as $to){
if ($to->form == 'pswC' && $to->heading == 'A'){echo "allow";}
elseif ($to->form == 'pswC' && $to->heading == 'B'){echo "notallow";}
elseif ($to->form == 'pswC' && $to->heading == 'C'){echo "block";}
} // but this is empty... how can I show some echo?
?>
是否可以在第二个foreach
不存在时显示消息?此示例中的更多内容和实时预览:https://3v4l.org/GhdRT
使用变量来跟踪您是否找到了活动服务。
$xml = simplexml_load_string($data);
$pswA_found = false;
foreach ($xml->to as $to){
if ($to->form == 'pswA' && $to->heading == 'A'){
echo "allow";
$pswA_found = true;
}
elseif ($to->form == 'pswA' && $to->heading == 'B'){
echo "notallow";
$pswA_found = true;
}
elseif ($to->form == 'pswA' && $to->heading == 'C'){
echo "block";
$pswA_found = true;
}
}
if (!$pswA_found) {
echo "No active service for pswA";
}
$pswC_found = false;
foreach ($xml->to as $to){
if ($to->form == 'pswC' && $to->heading == 'A'){
echo "allow";
$pswC_found = true;
}
elseif ($to->form == 'pswC' && $to->heading == 'B'){
echo "notallow";
$pswC_found = true;
}
elseif ($to->form == 'pswC' && $to->heading == 'C'){
echo "block";
$pswC_found = true;
}
}
if (!$pswC_found) {
echo "No active service for pswC";
}