Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在不破坏结构的情况下,将两个关联数组合并到一个数组中_Php_Arrays_Multidimensional Array_Associative Array_Array Merge - Fatal编程技术网

Php 在不破坏结构的情况下,将两个关联数组合并到一个数组中

Php 在不破坏结构的情况下,将两个关联数组合并到一个数组中,php,arrays,multidimensional-array,associative-array,array-merge,Php,Arrays,Multidimensional Array,Associative Array,Array Merge,我有一个数组: $request = array( 'method' => 'Document.create', 'params' => Array ( 'document' => Array ( SOME DATA ), 'thirdaddress' => Array ( SOME DATA ), 'row' => Array (

我有一个数组:

$request = array(
    'method' => 'Document.create',
    'params' => Array (

        'document' => Array ( SOME DATA

            ),

        'thirdaddress' => Array ( SOME DATA

            ),
        'row' => Array (

            '1' => Array ( SOME DATA
            ),

            '2' => Array ( SOME DATA

            ),

            '4' => Array ( SOME DATA
            ),

        )
    )
);
我想在“2”键和“4”键之间“注入”此

'3' => Array (    SOME DATA

                ),
我想用相同的结构注入:

$secondArray = array(
        'params'=>Array(
            'row'=> Array(
                '3' => Array (    SOME DATA

                ),
            )   
        )       
    );
我试过这个:

1. <代码>$request['params']['row']['3']=$secondArray
2. <代码>$request=array\u merge($request$secondArray)
3. <代码>$request=array\u merge\u recursive($request,$secondArray)

运动也不起作用。。我的那一排被卡在最后一排了。。 我已经做了一个实验

if(语句){
//$request=array\u merge\u recursive($request,$secondArray;
//$request['params']['row']['3']=$secondArray['params']['row']['3'];
$request['params']['row']['3']=$secondArray;
ksort(请求);
}
模具(转储($request));

我错在哪里?
谢谢。

简单地插入它,这应该可以-

$request['params']['row']['3']  = Array(SOME DATA);
//This sorts the "row" keys - 
ksort($request['params']['row'], SORT_NUMERIC)

关于第1点,你几乎很好,你只需要这一改变。
而不是:

$secondArray = array(
    'params'=>Array(
        'row'=> Array(
            '3' => Array (    SOME DATA

            ),
        )   
    )       
);
试试这个:

$secondArray = array(SOME DATA);
尝试:


$request['params']['row']['3']=array(一些数据)
?这不是最好的解决方案,但可以解决问题:
$request['params']['row']['3']=$secondArray['params']['row']['3'];
基于Jon的想法。@Bobby这段代码将“3”放在数组的末尾:/哦,我没有看到编辑。好了,现在我的代码不再有效了。递归将“3”放在$request的末尾,而不是在“2”和“4”键之间。你不能直接在“2”和“4”键之间插入“3”键。相反,你必须按照我的建议插入它d,然后使用ksort()对生成的$request['params']['row']数组进行手动排序。与其他方法一样,尝试ksort($request['params']['row']),将数组放在$requestAdd ksort的末尾($request['params']['row']);然后。它按键排序,这正是您想要的。此代码插入“是”,但在错误的位置,我需要介于“2”和“4”之间的“3”。@Azrael_404您可以使用带有sort_标志的ksort()作为sort_数字。请检查编辑。
<?php
$request = array(
    'method' => 'Document.create',
    'params' => Array (

        'document' => Array ( SOME DATA

            ),

        'thirdaddress' => Array ( SOME DATA

            ),
        'row' => Array (

            '1' => Array ( SOME DATA
            ),

            '2' => Array ( SOME DATA

            ),

            '4' => Array ( SOME DATA
            ),

        )
    )
);

$secondArray = array(
    'params'=>Array(
        'row'=> Array(
            '3' => Array ('foo' => 'bar'),
        )   
    )       
);

$request = array_merge_recursive($request, $secondArray)