0

PHP 以下の xml ファイルから、2 つの数量を含む 2 つの購入価格を取得し、それらをテーブルに入れる必要があります。以下に表示されるxml。配列から必要な変数を取得できません。

<?xml version="1.0" encoding="UTF-8"?><products>
<Product>
    <ParentName>22.01.14.10</ParentName>
    <Name>3040-100</Name>
    <Prices>
      <Price min-qty="1" currency="EUR">6,3200</Price>
      <Price min-qty="12" currency="EUR">5,3200</Price>
      <Price min-qty="24" currency="EUR">4,7200</Price>
   </Prices>
</Product>
<Product>
   <ParentName>22.01.10</ParentName>
   <Name>PDS1C</Name>
   <Prices>
      <Price min-qty="1" currency="EUR">1,9565</Price>
      <Price min-qty="10" currency="EUR">1,6828</Price>
      <Price min-qty="20" currency="EUR">1,4828</Price>
   </Prices>
</Product>
<Product>
   <ParentName>22.01.14</ParentName>
   <Name>P1017</Name>
   <Prices>
      <Price min-qty="1" currency="EUR">4,9337</Price>
      <Price min-qty="20" currency="EUR">3,9699</Price>
  </Prices>
</Product>
</products>

これで、価格配列を埋めます:

foreach($product->{'Prices'}->children() as $key => $price)
{
$prices[ "" . $price->attributes()->{'min-qty'}] = mysql_real_escape_string(str_replace(',','.',"" . $price[0]));
}
ksort($prices); // sort array

結果は次のとおりです。

Array
(
[1] => 6.3200
[12] => 5.3200
[24] => 4.7200
)
Array
(
[1] => 1.9565
[10] => 1.6828
[20] => 1.4828
)
Array
(
[1] => 4.9337
[20] => 3.9699
)

ここで、変数を表に入れるために変数を埋める必要があります。

$qfirst = ''; // should be 1
$pfirst = ''; // should be 6.3200
$qsec = ''; // should be 12
$psec = ''; // should be 5.3200

私が試したことは、4つの変数にデータを取得しません。

4

3 に答える 3

2

変化する

$prices[ "" . $price->attributes()->{'min-qty'}] = mysql_real_escape_string(str_replace(',','.',"" . $price[0]));

$prices[] = array($price->attributes()->{'min-qty'},mysql_real_escape_string(str_replace(',', '.', "" . $price[0])));

それで

foreach(array_map(null,array("first","sec","third"),$prices) as $blend)
{
    ${"q". $blend[0]} = $blend[1][0];
    ${"p". $blend[0]} = $blend[1][1];
}

var_dump($qfirst,$pfirst,$qsec,$psec) ; // it would create this variables

また

reset($prices);
foreach(array("first","sec","third") as $blend)
{
    ${"q". $blend} = key($prices);
    ${"p". $blend} = current($prices);
    next($prices);
}
var_dump($qfirst,$pfirst,$qsec,$psec) ; 
于 2013-02-12T13:32:47.287 に答える
0

あなたが使用することができます

すべてのキー値を出力します。=>print_r(array_keys($array));

値の出力 => print_r(array_values($array));

于 2013-02-12T13:25:10.173 に答える
0

foreachこれにより、ループの最初の 2 ラウンドがシミュレートされ、目的の結果が得られます。

reset($prices);
$qfirst = key($prices);
$pfirst = current($prices);

next($prices);
$qsec = key($prices);
$psec = current($prices);
于 2013-02-12T13:35:09.720 に答える