2017-06-26 9 views
0

私はマルチ配列を持っているので、他の配列と組み合わせる必要があります。この配列はXML形式でSOAPに送信されるため、正しい構造を持つ必要があります。PHPの多次元配列をマージする

この配列は請求書のようなもので、繰り返しなければならない「items」があります。だから、私は2つの配列(1つは常に同じ構造を持つ)を作成し、items配列を追加すると思います。

マージを使用すると、2番目の配列を正しいキーに配置できないという問題があります。ここに例があります。

これが正しい配列構造である:だから

$params = array( 
     'authRequest' => 
     array('token' => 'token', 
       'sign' => 'sign', 
       'cuitRepresentada' => 'CUIT'), 
     'comprobanteRequest' => 
      array( 'codigoTipoComprobante' => $codtipcbte, 
        'numeroPuntoVenta' => $ptovta, 
        'numeroComprobante' => $cbte, 

        **'arrayItems' => 
         array('item' => 
          array(
           array(
           'tipo'=> $compreqitem['tipo'], 
           'codigoTurismo'=> $compreqitem['codTur'], 
           'descripcion'=> $compreqitem['descrip'], 
           'codigoAlicuotaIVA'=> $compreqitem['codAlic'], 
           'importeIVA'=> $compreqitem['impIva'], 
           'importeItem'=> $compreqitem['impItem'], 
           ), 
           array(
           'tipo'=> $compreqitem['tipo'], 
           'codigoTurismo'=> $compreqitem['codTur'], 
           'descripcion'=> $compreqitem['descrip'], 
           'codigoAlicuotaIVA'=> $compreqitem['codAlic'], 
           'importeIVA'=> $compreqitem['impIva'], 
           'importeItem'=> $compreqitem['impItem'], 
           ), 
           ), 

          ),** 



        'arraySubtotalesIVA' => 
         array('subtotalIVA' => 
          array(
           'codigo'=> $compreqiva['codIva'], 
           'importe'=> $compreqiva['importe'], 
           ), 

          ), 
        ), 

     ); 

、私は "arrayItems" 空

'arrayItems' => array(), 

で配列を構築、私はarrayItem配列を構築:

$arrayitems = 
    array('arrayItems' => 
         array('item' => 
          array(
           array(
           'tipo'=> $compreqitem['tipo'], 
           'codigoTurismo'=> $compreqitem['codTur'], 
           'descripcion'=> $compreqitem['descrip'], 
           'codigoAlicuotaIVA'=> $compreqitem['codAlic'], 
           'importeIVA'=> $compreqitem['impIva'], 
           'importeItem'=> $compreqitem['impItem'], 
           ), 
           array(
           'tipo'=> $compreqitem['tipo'], 
           'codigoTurismo'=> $compreqitem['codTur'], 
           'descripcion'=> $compreqitem['descrip'], 
           'codigoAlicuotaIVA'=> $compreqitem['codAlic'], 
           'importeIVA'=> $compreqitem['impIva'], 
           'importeItem'=> $compreqitem['impItem'], 
           ), 
           ), 

          ), 
         ); 

次に、両方の配列に結合するためにmergeを使用します:

$resultado = array_merge($params['comprobanteRequest'], $arrayitems); 

動作しますが、最初のキーが削除されます...

私が削除された理由を知らない
'authRequest' => 
      array('token' => 'token', 
        'sign' => 'sign', 
        'cuitRepresentada' => 'CUIT'), 

、多分マージ機能がcorect方法ではありません...事前に

ありがとう!

答えて

0

あなたの最初の配列、arrayItemsで常に空で、その後、あなたがマージを必要としない、ただ値を設定する場合:もちろん

$params['comprobanteRequest']['arrayItems'] = $arrayItems['arrayItems'];

$arrayItemsは一つだけが含まれているので、これは、単純化することができますキー、しかしあなたは精神を得る。

+0

ありがとうございます!私はそれがどれくらいのアイテムがインボイスを持つのか知りませんので、この方法で行います。 –