0

我有一个这种格式的 XML:

<row typeID="5" volume="15" orders="6"/>
<row typeID="5" volume="2" orders="2"/>
<row typeID="6" volume="9" orders="5"/>
<row typeID="6" volume="8" orders="2"/>
<row typeID="1" volume="2" orders="2"/>
<row typeID="2" volume="162" orders="13"/>

我正在使用这个:

$volumes = array();
foreach ($xml -> result -> rowset-> row as $row)
{
  $id = $row['typeID'];
  $volume = $row['volume'];
  $volumes[(string)$id] = $volumes[(string)$id] + $volume;
}

但是,我在某些 ID 上收到此错误....

Notice: Undefined offset: 6

我不明白这是问题所在?

这就是我对 $volumes 数组所做的事情:

while( $element = each( $volumes ) )
{
    $daily = $element['value'] / 10;            
    if ($daily > 30) {
        echo "typeid=" . $element[ 'key' ];
    }
}
4

2 回答 2

0

尝试从$volumes阵列中读取不存在的键会触发此通知。您尝试$volumes[(string)$id]在第一次作业之前阅读。好的做法是使用isset()

foreach ($xml -> result -> rowset-> row as $row) {
  $id = (string) $row['typeID'];
  $volume = $row['volume'];
  if (isset($volumes[$id])) {
    $volumes[$id] = $volumes[$id] + $volume;
  } else {
    $volumes[$id] = $volume;
  }
}

快速而肮脏的方法是禁用通知:error_reporting(E_ALL & ~E_NOTICE);

于 2013-09-22T11:17:00.557 回答
0

似乎您想通过 id 计算总和,使用下面的代码,它将消除警告。

<?php
$volumes = array();
foreach ($xml -> result -> rowset-> row as $row)
{
    $id = (string)$row['typeID'];
    $volume = $row['volume'];
    if (!isset($volumes[$id]))
    {
        $volumes[$id] = 0;
    }
    $volumes[$id] = $volumes[$id] + $volume;
}

我想你可能需要这个来使用$volumes

foreach ($volumes as $id => $value)
{
    $daily = $value / 10;
    if ($daily > 30)
    {
        echo "typeid=" . $id;
    }
}
于 2013-09-22T11:08:26.033 回答