Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 获取子对象的值_Php_Xml - Fatal编程技术网

Php 获取子对象的值

Php 获取子对象的值,php,xml,Php,Xml,在Stackoverflow用户的帮助下,我解决了很多问题。 我有一个XML witch,它是根节点的子节点之一: <ChannelStatistics ChannelId="DMAT" CounterDim=""> <TotalCount>104</TotalCount> <DefectCounter ClassId="F1">62</DefectCounter>

在Stackoverflow用户的帮助下,我解决了很多问题。 我有一个XML witch,它是根节点的子节点之一:

<ChannelStatistics ChannelId="DMAT" CounterDim="">
  <TotalCount>104</TotalCount>
     <DefectCounter ClassId="F1">62</DefectCounter>
     <DefectCounter ClassId="F2">34</DefectCounter>
     <DefectCounter ClassId="F3">8</DefectCounter>
</ChannelStatistics>

<ChannelStatistics ChannelI="FERRO" CounterDim="">
  <TotalCount>17</TotalCount>
     <DefectCounter ClassId="F1">2</DefectCounter>
     <DefectCounter ClassId="F2">5</DefectCounter>
     <DefectCounter ClassId="F3">10</DefectCounter>
</ChannelStatistics>

104
62
34
8.
17
2.
5.
10
使用这个php代码

 $obj = simplexml_load_file('data\data.xml');
   foreach($obj->PieceReport->Piece->DeviceValuation->ChannelStatistics as $channel){
    echo $channel->attributes()->ChannelId;
    echo " - "; 
foreach($channel->DefectCounter as $defect){
    echo $defect->attributes()->ClassId, "= ";
    echo $channel['ClassId'],"  " ;
         } 
    echo "<br>" ;
   }
$obj=simplexml\u load\u文件('data\data.xml');
foreach($obj->PieceReport->Piece->DeviceValuation->ChannelStatistics as$channel){
echo$channel->attributes()->ChannelId;
回声“-”;
foreach($channel->DefectCounter作为$defect){
echo$defect->attributes()->ClassId,“=”;
echo$channel['ClassId'],“”;
} 
回声“
”; }
我可以

DMAT-F1=F2=F3=

铁-F1=F2=F3=

但是我被困在如何得到F1,F3和F3的值上

因此,我需要的是:

DMAT-F1=62 F2=34 F3=8

铁-F1=2 F2=5 F3=10

这样我就可以将它们保存在Mysql数据库中

我是新的XML和PHP,所以我想这应该是一个简单的


感谢您的帮助

您需要访问
$defect
值,而不是代码第3行中
$channel
属性
ClassID

foreach($channel->DefectCounter as $defect){
    echo $defect->attributes()->ClassId, "= ";
    echo $channel['ClassId'],"  " ; // <----- change needed here
} 

我推荐@Mestre1966 Welcome的可能副本
echo $defect;