我正在查询API并获取XML结果。我正在尝试将这些结果并将其粘贴到我根据其状态的表格中。每列都是不同的状态,因此需要进入各自的列。我遇到的问题是当我有多个以相同状态返回的项目时。我相信这打破了循环。我得到的一些项目根本没有出现,有些项目正在重复出现。有什么想法,我怎么能实现我想要的?谢谢!
更新示例xml:
<?xml version="1.0" encoding="UTF-8"?>
<Assets total="6">
<Asset>
<Attribute name="ID">B-1001</Attribute>
<Attribute name="Title">Some Bug #1</Attribute>
<Attribute name="Status">In Progress</Attribute>
</Asset>
<Asset>
<Attribute name="ID">B-1002</Attribute>
<Attribute name="Title">Some Bug #2</Attribute>
<Attribute name="Status">Code Review</Attribute>
</Asset>
<Asset>
<Attribute name="ID">B-1003</Attribute>
<Attribute name="Title">Some Bug #3</Attribute>
<Attribute name="Status">Code Review</Attribute>
</Asset>
<Asset>
<Attribute name="ID">B-1004</Attribute>
<Attribute name="Title">Some Bug #4</Attribute>
<Attribute name="Status">Ready for Development</Attribute>
</Asset>
<Asset>
<Attribute name="ID">B-1005</Attribute>
<Attribute name="Title">Some Bug #5</Attribute>
<Attribute name="Status">In Progress</Attribute>
</Asset>
<Asset>
<Attribute name="ID">B-1006</Attribute>
<Attribute name="Title">Some Bug #6</Attribute>
<Attribute name="Status">In Progress</Attribute>
</Asset>
<?php
foreach($xmlDefect as $assetDefect){
// variables from defects XML
$defectId = $assetDefect->Attribute[0];
$defectTitle = $assetDefect->Attribute[1];
$defectStatus = $assetDefect->Attribute[2];
if($defectStatus == "Gathering Requirements"){
$defectGatheringReqs = "<div class='bugsItem'>" . $defectId . "</div>";
}else if($defectStatus == "Ready for Development"){
$defectReadyForDev = "<div class='bugsItem'>" . $defectId . "</div>";
}else if($defectStatus == "In Progress"){
$defectInProgress = "<div class='bugsItem'>" . $defectId . "</div>";
}else if($defectStatus == "Code Review"){
$defectAEReview = "<div class='bugsItem'>" . $defectId . "</div>";
}else if($defectStatus == "Code Complete"){
$defectCodeComplete = "<div class='bugsItem'>" . $defectId . "</div>";
}
}
?>
<table>
<tr>
<td>
Gathering Requirements
</td>
<td>
Ready for Development
</td>
<td>
In Progress
</td>
<td>
Code Review
</td>
<td>
Code Complete
</td>
</tr>
<tr>
<td>
<?php echo $defectGatheringReqs; ?>
</td>
<td>
<?php echo $defectReadyForDev; ?>
</td>
<td>
<?php echo $defectInProgress; ?>
</td>
<td>
<?php echo $defectAEReview; ?>
</td>
<td>
<?php echo $defectCodeComplete; ?>
</td>
</tr>
</table>
答案 0 :(得分:0)
好的我认为问题是=
运算符覆盖了以前的任何值。
这里有两个选项:首先是使用数组并使用$somevar[] .= somevalue
语法,因此每个值都会添加到数组中,而不是覆盖先前的值。
第二个选项是预先声明所有变量,然后使用.=
连接运算符,以便将新字符串附加到前一个字符串的末尾。
以下是我在您的情况下可能会做的事情:
<?php
var $defectGatheringReqs = array();
var $defectReadyForDev = array();
. . .
foreach($xmlDefect as $assetDefect){
. . .
switch($defectStatus)
{
case "Gathering Requirements"):
$defectGatheringReqs[] = $defectId;
break;
case "Ready for Development"):
$defectReadyForDev[] = $defectId;
break;
. . .
}
?>
<table>
<tr>
<td>
Gathering Requirements
</td>
<td>
Ready for Development
. . .
</tr>
<tr>
<td>
<?php foreach($defectGatheringReqs as $id) { ?>
<div class='bugsItem'>
<?php echo $id; ?>
</div>
<?php } ?>
</td>
. . .
答案 1 :(得分:0)
我非常感谢所有的帮助。我最终找到了一个与我的问题完全不同的解决方案。我现在正在对我的服务器上的一个PHP文件进行jQuery AJAX调用,该文件调用另一台服务器上的API(必须这样做,因为AJAX调用本身不能在不同的域之间进行) XML返回。
然后,我只是使用JavaScript / jQuery来解析XML并将其附加到正确的列。 jQuery使附加部分更容易! :)
注意:显然不能将此答案标记为2天的选择答案,但之后会这样做。