如何在php中分离返回的值?

时间:2010-02-07 14:01:00

标签: php function

我正在使用一个将返回2个数组的php函数。下面是我的函数

function imserv($id){

$xml=simplexml_load_file("feed.xml");

$images=$xml->xpath('//IMAGE');
$services=$xml->xpath('//SERVICES');

return array ($images,$services);
}

我使用以下代码从服务块获取结果

$services=imgserv('5874');

foreach ($services as $servicerow)
{   
    var_dump($servicerow);

}

问题在于,当它只尝试获取服务的值时,它会同时返回服务和图像。我需要在两个不同的地方使用它们,所以如何将它分开以便以不同的方式使用?

下面是我的Feed,

<?xml version="1.0" ?>
<FOUND>
<NFO>
<IMAGES>
    <IMAGE>
      <SMALL>images/small.jpg</SMALL> 
      <MED>images/med.jpg</MED> 
      <LARGE>images/large.jpg</LARGE> 
      <EXTRAL>images/extra.jpg</EXTRAL> 
    </IMAGE>
    <IMAGE>
      <SMALL>images1/small.jpg</SMALL> 
      <MED>images1/med.jpg </MED> 
      <LARGE>images1/large.jpg</LARGE> 
      <EXTRAL>images1/extra.jpg</EXTRAL> 
    </IMAGE>
    <IMAGE>
      <SMALL>images2/small.jpg</SMALL> 
      <MED>images2/med.jpg </MED> 
      <LARGE>images2/large.jpg</LARGE> 
      <EXTRAL>images2/extra.jpg</EXTRAL> 
      </IMAGE>
   </IMAGES>

<SERVICES>
<GROUP><GROUPNAME>Officials</GROUPNAME><SERVICE>
<TYPE>Handy</TYPE>
<NB>0</NB>
</SERVICE>
<SERVICE>
<TYPE>Bedroom</TYPE>
<NB>0</NB>
</SERVICE>
<SERVICE>
<TYPE>Meeting Rooms</TYPE>

<NB>0</NB>
</SERVICE>
<SERVICE>
<TYPE>Conferencing</TYPE>
<NB>0</NB>
</SERVICE>
<SERVICE>
<TYPE>Offices</TYPE>
<NB>0</NB>
</SERVICE>
</GROUP>
<GROUP><GROUPNAME>Reception</GROUPNAME><SERVICE>

<TYPE>Support</TYPE>
<NB>0</NB>
</SERVICE>
<SERVICE>
<TYPE>Reception</TYPE>
<NB>0</NB>
</SERVICE>
<SERVICE>
<TYPE>Telephone</TYPE>
<NB>0</NB>
</SERVICE>

</GROUP>
<GROUP><GROUPNAME>Authent</GROUPNAME><SERVICE>
<TYPE>Cams</TYPE>
<NB>0</NB>
</SERVICE>
</GROUP>
<GROUP><GROUPNAME>IT</GROUPNAME><SERVICE>
<TYPE>Internet</TYPE>
<NB>0</NB>
</SERVICE>
<SERVICE>
<TYPE>Telephone System</TYPE>

<NB>0</NB>
</SERVICE>
</GROUP>
<GROUP><GROUPNAME>Amenities</GROUPNAME>
<SERVICE>
<TYPE>24/7</TYPE>
<NB>0</NB>
</SERVICE>
<SERVICE>
<TYPE>AC</TYPE>
<NB>0</NB>
</SERVICE>

</GROUP>
</SERVICES>
</NFO>
</FOUND>

任何帮助将不胜感激。

由于

2 个答案:

答案 0 :(得分:5)

这样可以解决问题:

list($images, $services) = imgserv('5874');

答案 1 :(得分:1)

如果您将功能更改为以下内容会更容易:

function imserv($id){
$a = array();
$xml=simplexml_load_file("feed.xml");

$a['images']=$xml->xpath('//IMAGE');
$a['services']=$xml->xpath('//SERVICES');

return $a;
}

然后你就可以写出像这样的东西了

$imservarr=imgserv('5874');
foreach ($imservarr['services'] as $servicerow)
{   
var_dump($servicerow);    
}
foreach ($imservarr['images'] as $imagerow)
{   
var_dump($imagerow);    
}