首先,我对PHP非常无知,所以要善良!我正在为一个SPCA(我是一名兽医和一名兼职极客)的网站工作。 PHP从门户网站访问一个xml文件,用于管理收容所和存储图像信息。该文件将xml数据写入JSON,然后在句柄模板等中使用JSON数据。我从xml文件中获取一些数据以将结果打印到JSON时遇到问题。PHP与访问XML数据的foreach语句问题
XML文件是这样的:
</DataFeedAnimal>
<AdditionalPhotoUrls>
<string>doc_73737.jpg</string>
<string>doc_74483.jpg</string>
<string>doc_74484.jpg</string>
</AdditionalPhotoUrls>
<PrimaryPhotoUrl>19427.jpg</PrimaryPhotoUrl>
<Sex>Male</Sex>
<Type>Cat</Type>
<YouTubeVideoUrls>
<string>http://www.youtube.com/watch?v=6EMT2s4n6Xc</string>
</YouTubeVideoUrls>
</DataFeedAnimal>
在PHP文件,通过一个朋友写的,代码如下,(只是其中的一部分),访问XML数据并将它写入JSON :
<?php
$url = "http://eastbayspcapets.shelterbuddy.com/DataFeeds/AnimalsForAdoption.aspx";
if ($_GET["type"] == "found") {
$url = "http://eastbayspcapets.shelterbuddy.com/DataFeeds/foundanimals.aspx";
} else if ($_GET["type"] == "lost") {
$url = "http://eastbayspcapets.shelterbuddy.com/DataFeeds/lostanimals.aspx";
}
$response_xml_data = file_get_contents($url);
$xml = simplexml_load_string($response_xml_data);
$data = array();
foreach($xml->DataFeedAnimal as $animal)
{
$item = array();
$item['sex'] = (string)$animal->Sex;
$item['photo'] = (string)$animal->PrimaryPhotoUrl;
$item['videos'][] = (string)$animal->YouTubeVideoUrls;
$item['photos'][] = (string)$animal->PrimaryPhotoUrl;
foreach($animal->AdditionalPhotoUrls->string as $photo) {
$item['photos'][] = (string)$photo;
}
$item['videos'] = array();
$data[] = $item;
}
echo file_put_contents('../adopt.json', json_encode($data));
echo json_encode($data);
?>
JSON输出效果很好,但我无法将'视频'写入JSON文件中,因为'照片'会出现。我只是得到'/ n'!
由于帮助过此事的朋友不在身边,所以我被卡住了。我已经尝试了类似的代码来处理照片的foreach声明,但我无处可去。任何帮助将不胜感激,宠物也会感激它!
谢谢!我会尝试一下'json_encode($ animal)'的建议。我很欣赏时间来回答我的问题!效果很好!。我正在处理的页面需要这个json数据,然后我预编译一个句柄模板来加载可供采用的当前宠物。我通过在php文件上每小时运行一次cron作业来保持json数据最新。如果你有兴趣的话,这里是演示页面的链接。 [demo](http://yourvets.com/docs/cardsJ.html) – Macsupport
@Macsupport一个漂亮的网站,在那里毫无疑问。恭喜!我自己并不喜欢有宠物动物的想法,我反对它,让我很难过看到所有那些充满伤感生物的动物保护区。对于非常具体的任务或居住在乡村地区的人来说,事情肯定是不同的。但对于绝大多数人来说,我个人认为避免这种习惯是一种总体积极的态度。 – arkascha