PHP数组只输出第一个值

时间:2016-02-29 12:35:43

标签: php mysql arrays

我正在尝试将数据从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)。

1 个答案:

答案 0 :(得分:-1)

在不知道结果集的真实情况的情况下,我怀疑你的假设是否正确,集合中的结果/行确实包含两个子粒子。这最终意味着所有结果都有两个子粒子,而且假设情况并非如此,因为那时它需要返回类似sChange1,sChange2 ......

即使结果看起来像那样并包含两个或更多子文章,您的代码也只会将其中一个分配给每个结果的子文章数组。