1

次のようなXMLファイルがあります。

<services>
  <service>
    <code>MODULE_1</code>
    <name>Regular</name>
    <price>14.85</price>
  </service>

  <service>
    <code>MODULE_2</code>
    <name>Express</name>
    <price>22.50</price>
  </service>

</services>

$result別のサーバーからファイルを取得します。私のコードは次のようになります。

$methods = array() ;    
$xmlQuotes = new SimpleXMLElement($result)  ;

foreach($xmlQuotes as $quote) {
    $add = 0 ; $f = 0 ;
    switch ($quote->code) {
        case  "MODULE_1" ;
        if ((in_array("Regular", $this->allowed_methods))) {
            $add = MODULE_1_HANDLING ; $f = 1 ;
            $id = "m_1";
            $cost = $quote->price;
            $description = $quote->name;
        }
        break;

        case  "MODULE_2" ;
        if ((in_array("Express", $this->allowed_methods))) {
            $add =  MODULE_2_HANDLING ; $f = 1 ;
            $id = "m_2";
            $cost = $quote->price;
            $description = $quote->name;
        }
        break;
    }

    if (($cost > 0) && ($f == 1)) {
        $cost = $cost + $add ;
        $methods[] = array('id' => "$id",
                           'title' => "$description",
                           'cost' => "$cost");
    }
}

$this->quotes['methods'] = $methods;

そして、これは最後のポイントまですべて問題ありません-コードを使用しているとき、$methods配列は正しく返されず、一致しているため$cost、代わりに最初のモジュールの価格と説明を返します。これは次のようになります。$description$code

MODULE_1: Regular: 14.85
MODULE_2: Regular: 14.85

私はここで夢中になっています」私は明らかに私が何をしているのかわからないので、どんな助けでも大いに感謝されるでしょう。

4

2 に答える 2

0

これらのステートメントなしでコードを試しifた後var_dump($methods)、結果は次のようになります。

Notice: Use of undefined constant MODULE_1_HANDLING - assumed 'MODULE_1_HANDLING' in /in/dTOdQ on line 24  
Notice: Use of undefined constant MODULE_2_HANDLING - assumed 'MODULE_2_HANDLING' in /in/dTOdQ on line 33  

array(2) {
  [0]=>
  array(3) {
    ["id"]=>
    string(3) "m_1"
    ["title"]=>
    string(7) "Regular"
    ["cost"]=>
    string(2) "14"
  }
  [1]=>
  array(3) {
    ["id"]=>
    string(3) "m_2"
    ["title"]=>
    string(7) "Express"
    ["cost"]=>
    string(2) "22"
  }

ここで試してみてください:http://3v4l.org/dTOdQ

于 2013-03-03T03:15:52.603 に答える
0

問題は 2 番目の((in_array("Express", $this->allowed_methods)))状態にあるようです。それが false を返し、前の条件if ((in_array("Regular", $this->allowed_methods)))が true を返した場合、コストと説明には常に最初の値のみが含まれます。

于 2013-03-03T00:32:22.150 に答える