我正在尝试将数据从MySQL写入PHP-Array(使用PHP库FluidXML生成XML文件)。当我回显数组时,我只得到它的第一个值,但是当我用与数组相同的数据回显一个变量时,我得到所有信息的正确输出。让我更准确地解释一下:
获取数据的查询:
$sql = sprintf("select b.nPosID, b.nAmount, b.sName, .......");
$result = mysql_query($sql);
然后我循环结果:
$msg = "";
$orderArticles = [];
$orderSubArticles = [];
while($data = mysql_fetch_array($result))
{
if($data['sChange'] != null) {
$msg .= ' * ' . $data['sChange'] . ' ' . number_format($data['nAmount'] * $data['nPriceChange'], 2) . "\r\n";
$orderSubArticles[] = ['SubArticle' => [
'ArticleNo' => '0',
'ArticleName' => $data['sChange'],
'Count' => $data['nAmount'],
'Price' => $data['nPriceChange']
],];
}
if ($nPosID != $data['nPosID']) {
$msg .= " \r\n" . $data['nAmount'] . ' x ' . $data['sName'] . ' ' . number_format($data['nAmount'] * $data['nPrice'], 2) . "\r\n";
$orderArticles[] = ['Article' => [
'ArticleNo' => '0',
'ArticleName' => $data['sName'],
'ArticleSize' => '0',
'Count' => $data['nAmount'],
'Price' => $data['nPrice'],
'Tax' => '10',
'SubArticleList' => [
$orderSubArticles
]],];
}
}
让我们假设,从SQL查询中我得到以下正确的输出:
Pizza
+ extra cheese
+ extra tonno
当我回显$ msg变量时,我得到了相同的正确结果。但是当我回显数组时,我只得到第一个值:
Pizza
+ extra cheese
确切地说,是使用数组中的值生成的输出:
<ArticleList>
<Article>
<ArticleName>Pizza</ArticleName>
<Count>1</Count>
<Price>12.9</Price>
<SubArticleList>
<SubArticle>
<ArticleName>Extra cheese</ArticleName>
<Count>1</Count>
<Price>3</Price>
</SubArticle>
</SubArticleList>
</Article>
</ArticleList>
所以第二个<SubArticle>
丢失了(额外的tonno)。
答案 0 :(得分:-1)
在不知道结果集的真实情况的情况下,我怀疑你的假设是否正确,集合中的结果/行确实包含两个子粒子。这最终意味着所有结果都有两个子粒子,而且假设情况并非如此,因为那时它需要返回类似sChange1,sChange2 ......
即使结果看起来像那样并包含两个或更多子文章,您的代码也只会将其中一个分配给每个结果的子文章数组。