Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/229.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 - Fatal编程技术网

php合并数组

php合并数组,php,Php,在下面的多维数组中,我想合并具有相同merge_id的数组。我不确定“merge”是否是正确的词:在下面的示例中,数组['0']应该变成数组['0'],其中包含数组['0']['0']和数组['0']['1'],后者等于数组['1']。我希望这是有意义的 该数组来自按merge\u id排序的数据库,因此具有匹配merge\u id的数组总是彼此“相邻”,并且只有2个具有相同merge\u id 当我在数组中循环时,我知道我需要保留一个始终等于上一个merge_id的变量,如果上一个与当前匹配,

在下面的多维数组中,我想合并具有相同merge_id的数组。我不确定“merge”是否是正确的词:在下面的示例中,数组['0']应该变成数组['0'],其中包含数组['0']['0']和数组['0']['1'],后者等于数组['1']。我希望这是有意义的

该数组来自按merge\u id排序的数据库,因此具有匹配merge\u id的数组总是彼此“相邻”,并且只有2个具有相同merge\u id

当我在数组中循环时,我知道我需要保留一个始终等于上一个merge_id的变量,如果上一个与当前匹配,那么就合并

Array
(
    [0] => Array
        (
            [client_id] => 5
            [company_name] => company111_name
            [id] => 3
            [fee] => 111
            [year] => 2009
            [quarter] => 3
            [date_inserted] => 1264948583
            [description] => 2009 - Q3


            [fee_type] => 
            [merge_id] => a87ff679a2f3e71d9181a67b7542122c
            [total_paid] => 0
            [total_remainder] => 0
        )

    [1] => Array
        (
            [client_id] => 5
            [company_name] => company111_name
            [id] => 6
            [fee] => 55.5
            [year] => 2010
            [quarter] => 2
            [date_inserted] => 1264949470
            [description] => 2010 - Q2


            [fee_type] => 
            [merge_id] => a87ff679a2f3e71d9181a67b7542122c
            [total_paid] => 0
            [total_remainder] => 0
        )

    [2] => Array
        (
            [client_id] => 5
            [company_name] => company111_name
            [id] => 4
            [fee] => 111
            [year] => 2009
            [quarter] => 4
            [date_inserted] => 1264948583
            [description] => 2009 - Q4


            [fee_type] => 
            [merge_id] => 
            [total_paid] => 0
            [total_remainder] => 0
        )



    [3] => Array
        (
            [client_id] => 5
            [company_name] => company111_name
            [id] => 7
            [fee] => 55.5
            [year] => 2010
            [quarter] => 3
            [date_inserted] => 1264949470
            [description] => 2010 - Q3


            [fee_type] => 
            [merge_id] => 
            [total_paid] => 0
            [total_remainder] => 0
        )

)
代码


您可以使用ID作为键将具有相同ID的所有项放入同一数组中:

$merged = array();
foreach ($data['search'] as $fee) {
    if ($fee['merge_id'] == '') {
        continue;
    }
    if (!isset($merged[$fee['merge_id']])) {
        $merged[$fee['merge_id']] = array();
    }
    $merged[$fee['merge_id']][] = $fee;
}
$merged = array_values($merged);

请注意,这将跳过合并ID为空的项目。在这种情况下,您也可以通过替换
continue
$fee['merge_id']=0

您可以使用ID作为键,将具有相同ID的所有项目放置在同一数组中:

$merged = array();
foreach ($data['search'] as $fee) {
    if ($fee['merge_id'] == '') {
        continue;
    }
    if (!isset($merged[$fee['merge_id']])) {
        $merged[$fee['merge_id']] = array();
    }
    $merged[$fee['merge_id']][] = $fee;
}
$merged = array_values($merged);
  foreach($array as $p)
      $result[$p['merge_id']][] = $p;

请注意,这将跳过合并ID为空的项目。在这种情况下,您也可以通过替换
continue
$fee['merge_id']=0

+1在我写完答案之前,我应该先看看“新帖子”。准确+我应该在写完我的答案之前看看“新帖子”。完全正确
  foreach($array as $p)
      $result[$p['merge_id']][] = $p;