次の xml (スニペット) の各項目のオプション ノードの最大値と最小値を取得しようとしています。
<body>
<page number="1">
<itemset name="a">
<item id="1">
<option value="0">no</option>
<option value="1">rarely</option>
<option value="3">sometimes</option>
<option value="5">often</option>
<scale id="ho" />
</item>
<item id="2">
<option value="0">no</option>
<option value="1">rarely</option>
<option value="3">sometimes</option>
<option value="5">often</option>
<scale id="hi" />
</item>
</itemset>
</page>
</body>
私はこれをforeachループ内で行っています...
...
$scid="ho";
$total=0;
$count=0;
foreach ($txml->xpath("//item[scale/@id='$scid']") as $item) {
$score=$rxml->xpath("//item[@id='".$item['id']."']"); // get a value from another simple_xml-object
$total+=intval($score[0]);
$count++;
// ******* problem starts here...
$values = $item->option['value'];
// doing sth with $values to get max and min value
echo '<pre>';
print_r($values); // *******
echo '</pre>';
} // foreach $item
...
私が入るの$values
は
SimpleXMLElement Object
(
[0] => 0
)
代わりに$values = $item->xpath('option[@value]');
、私は...
Array
(
[0] => SimpleXMLElement Object
(
[@attributes] => Array
(
[value] => 0
)
)
[1] => SimpleXMLElement Object
(
[@attributes] => Array
(
[value] => 1
)
)
[2] => SimpleXMLElement Object
(
[@attributes] => Array
(
[value] => 3
)
)
[3] => SimpleXMLElement Object
(
[@attributes] => Array
(
[value] => 5
)
)
)
より簡単な解決策、またはそこから最小値と最大値を取得する方法を探しています。
私はsth likeを取得したいと思い$values['max']=5
ます$values['min']=0
前もって感謝します、
ミチ
PS: simple_xml でこれを機能させることができず、DOM に切り替えたくなかったので、いくつかの基本的な PHP を使用して手早く行うことにしました。
foreach ($item->xpath("//item[@id='".$item['id']."']/option/@value") as $value) {
$v[]=(int)$value->value;
}
echo max($v);
echo min($v);