繁体   English   中英

在PHP中合并多维数组

[英]Merge multidimensional array in PHP

我有一个多数组,需要与其他数组结合使用。 该数组用于以XML格式发送到SOAP,因此需要具有正确的结构。

这个数组就像一张发票,它有我必须重复的“项目”。 所以,我认为在使两个数组(一个总是具有相同的结构),并添加项目数组。

问题是,如果使用合并,则无法将第二个数组放入正确的键中。 这里举个例子。

这是正确的数组结构:

$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的方式...

提前致谢!

如果在第一个数组中arrayItems始终为空,则不需要合并,只需设置值即可:

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

当然,这可以简化,因为$arrayItems仅包含一个键,但是您会$arrayItems

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM