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

Php 合并数组中的重复值

Php 合并数组中的重复值,php,arrays,Php,Arrays,我有一个foreach循环的结果。 我尝试使用StackOverflow中的答案中的foreach循环遍历数组,但在另一个foreach循环下执行时遇到问题 Array ( [0] => Array ( [referenceUid] => FF875951-87CB-942F-84A2-46C620BF07C8 [itemUid] => 4CD23391-AD8C-C2FB-EF4A-46093D8A37A

我有一个foreach循环的结果。 我尝试使用StackOverflow中的答案中的foreach循环遍历数组,但在另一个foreach循环下执行时遇到问题

Array
(
    [0] => Array
        (
            [referenceUid] => FF875951-87CB-942F-84A2-46C620BF07C8
            [itemUid] => 4CD23391-AD8C-C2FB-EF4A-46093D8A37AE
            [total] => 300.00
        )

)

Array
(
    [0] => Array
        (
            [referenceUid] => D267A795-E142-C25B-E042-D8A519B57DF4
            [itemUid] => 4CD23391-AD8C-C2FB-EF4A-46093D8A37AE
            [total] => 150.00
        )

)
Array
(
    [0] => Array
        (
            [referenceUid] => D267A795-E142-C25B-E042-D8A519B57DF4
            [itemUid] => 4CD23391-AD8C-C2FB-EF4A-46093D8A37AE
            [total] => 150.00
        )

)
我想要的是在referenceUid列上合并具有重复值的数组。大概是这样的:

Array
(
    [0] => Array
        (
            [referenceUid] => FF875951-87CB-942F-84A2-46C620BF07C8
            [itemUid] => 4CD23391-AD8C-C2FB-EF4A-46093D8A37AE
            [total] => 300.00
        )

)

Array
(
    [0] => Array
        (
            [referenceUid] => D267A795-E142-C25B-E042-D8A519B57DF4
            [itemUid] => 4CD23391-AD8C-C2FB-EF4A-46093D8A37AE
            [total] => 150.00
        )

    [1] => Array
        (
            [referenceUid] => D267A795-E142-C25B-E042-D8A519B57DF4
            [itemUid] => 4CD23391-AD8C-C2FB-EF4A-46093D8A37AE
            [total] => 150.00
        )

)
您可以构造一个新的(合并的)数组并循环输入以组装新结构

一个重要的注意事项是使用公共键(
referenceUid
)作为新数组中的数组键,以便轻松引用它。如果您不想在最后使用它,只需重置数组键,例如,
$out=array\u values($out)

下面是一个例子:

$output = array();

foreach ($input as $values) {
    $key = $values['referenceUid'];
    $output[$key][] = $values;
}

// Don't want the referenceUid in the keys? Reset them:
$output = array_values($output);

如果我没弄错你的问题,你只想把所有数组组合在一起,其中Uid是相同的,对吗?如果是,你被困在哪里?显示您当前的代码/尝试解决问题。为什么不将其作为关键,以供将来参考?提供PHP代码数组作为示例输入是一个好主意,这样我们就可以轻松地复制您的数据结构,而不必将其全部破解并重新组装。它还引入了一种可能性,即我可能误解了您的数据结构,并给出了错误的答案@RobbieAverill对你的回答:1)很好地解释了你在这里实际做了什么!2) 如果您再次查看OP的输出,您会看到他的值被包装在另一个数组中,例如,
$values['referenceUid']
可能应该是
$values[0]['referenceUid']3)不确定他是想把“总数”加在一起还是整个数组4)不会用代码解释,因为这会降低可读性(不知道你为什么要删除答案。)@Rizier123我删除了它,因为我误解了所需的输出-不过谢谢你的评论:-)1。如果没有splat操作符,这将无法管理大量数组和2。数组/对象不重复,因为需要组合值,因此只能使用$result=array\u merge($array1,$array2);
//both arrays will be merged including duplicates
$result = array_merge( $array1, $array2 );
//duplicate objects will be removed
$result = array_map("unserialize", array_unique(array_map("serialize", $result)));
//array is sorted on the bases of id
sort( $result );`