无法在php中添加相同数组的值?

无法在php中添加相同数组的值?,php,arrays,logic,Php,Arrays,Logic,我有一个包含数组的以下数据。我想做的是,如果 访客日、访客id和类型相同。如果您看到下面的代码,就好像数组6和13具有相同的数据,而数组23和36也具有相同的数据。我只想简单地将visitor_cs的值相加为2。但我不知道如何才能做到这一点。我很想听到你的消息 Array ( [6] => Array ( [type] => mail [visitor_id] => 4 [visit

我有一个包含数组的以下数据。我想做的是,如果 访客日、访客id和类型相同。如果您看到下面的代码,就好像数组6和13具有相同的数据,而数组23和36也具有相同的数据。我只想简单地将visitor_cs的值相加为2。但我不知道如何才能做到这一点。我很想听到你的消息

Array
(
    [6] => Array
        (
            [type] => mail
            [visitor_id] => 4
            [visitor_day] => 20180516
            [visitor_cv] => 1
        )

    [13] => Array
        (
            [type] => mail
            [visitor_id] => 4
            [visitor_day] => 20180516
            [visitor_cv] => 1
        )

    [23] => Array
        (
            [type] => skype
            [visitor_id] => 4
            [visitor_day] => 20180516
            [visitor_cv] => 1
        )

    [36] => Array
        (
            [type] => skype
            [visitor_id] => 4
            [visitor_day] => 20180516
            [visitor_cv] => 1
        )
我希望上面的结果是这样的

 Array
(
    [type] => mail
    [visitor_id] => 4
    [visitor_day] => 20180516
    [visitor_cv] => 2
)


 Array
(
    [type] => skype
    [visitor_id] => 4
    [visitor_day] => 20180516
    [visitor_cv] => 2
)

执行此操作的一个选项是基于
类型
访客id
访客日
创建一个数组键,然后对
访客简历
求和:

$items = [
    ["type" => "mail", "visitor_id" => 4 ,"visitor_day" => 20180516, "visitor_cv" => 1],
    ["type" => "mail", "visitor_id" => 4, "visitor_day" => 20180516, "visitor_cv" => 1],
    ["type" => "skype", "visitor_id" => 4, "visitor_day" => 20180516,"visitor_cv" => 1],
    ["type" => "skype", "visitor_id" => 4, "visitor_day" => 20180516, "visitor_cv" => 1]
];

$result = [];

foreach ($items as $item) {
    $key = $item["type"] . $item["visitor_id"] . $item["visitor_day"];
    if (!array_key_exists($key, $result)) {
        $result[$key] = $item;
        continue;
    }
    $result[$key]["visitor_cv"] += $item["visitor_cv"];
}

执行此操作的一个选项是基于
类型
访客id
访客日
创建一个数组键,然后将
访客cv
相加:

$items = [
    ["type" => "mail", "visitor_id" => 4 ,"visitor_day" => 20180516, "visitor_cv" => 1],
    ["type" => "mail", "visitor_id" => 4, "visitor_day" => 20180516, "visitor_cv" => 1],
    ["type" => "skype", "visitor_id" => 4, "visitor_day" => 20180516,"visitor_cv" => 1],
    ["type" => "skype", "visitor_id" => 4, "visitor_day" => 20180516, "visitor_cv" => 1]
];

$result = [];

foreach ($items as $item) {
    $key = $item["type"] . $item["visitor_id"] . $item["visitor_day"];
    if (!array_key_exists($key, $result)) {
        $result[$key] = $item;
        continue;
    }
    $result[$key]["visitor_cv"] += $item["visitor_cv"];
}

我创建了这个函数,它包含一个数组和要作为数组检查的键, 然后,它通过连接键值来创建一个值,并将它们放入一个数组中,以便稍后检查该值是否存在,如果存在,则跳过,否则将该值放入名为tempArray的结果数组中,然后将其作为结果返回

function arrayUnique($array, $keys) { 
    $tempArray = []; 
    $keyArray = []; 

    foreach($array as $val) { 
        $keysValue = '';
        foreach($keys as $key) {
            $keysValue .= $val[$key];
        }

        if(!in_array($keysValue, $keyArray)) {
            $keyArray[] = $keysValue;
            $tempArray[] = $val;
        }
    } 

    return $tempArray; 
} 


$a = [
    ['name' => 'hassan', 'age' => 2, 'test' => 1],
    ['name' => 'hassan', 'age' => 1, 'test' => 1],
    ['name' => 'ali', 'age' => 2, 'test' => 1]
];
var_dump(arrayUnique($a, ['age', 'test']));

我创建了这个函数,它包含一个数组和要作为数组检查的键, 然后,它通过连接键值来创建一个值,并将它们放入一个数组中,以便稍后检查该值是否存在,如果存在,则跳过,否则将该值放入名为tempArray的结果数组中,然后将其作为结果返回

function arrayUnique($array, $keys) { 
    $tempArray = []; 
    $keyArray = []; 

    foreach($array as $val) { 
        $keysValue = '';
        foreach($keys as $key) {
            $keysValue .= $val[$key];
        }

        if(!in_array($keysValue, $keyArray)) {
            $keyArray[] = $keysValue;
            $tempArray[] = $val;
        }
    } 

    return $tempArray; 
} 


$a = [
    ['name' => 'hassan', 'age' => 2, 'test' => 1],
    ['name' => 'hassan', 'age' => 1, 'test' => 1],
    ['name' => 'ali', 'age' => 2, 'test' => 1]
];
var_dump(arrayUnique($a, ['age', 'test']));

您的数据来源是什么?例如,如果使用数据库,则可以“分组方式”。如果您不确定,我建议从简单的for/foreach循环开始,手动排序并添加到最终数组中。您的数据来源是什么?例如,如果使用数据库,则可以“分组方式”。如果您不确定,我建议从简单的for/foreach循环开始,手动排序并添加到最终数组中。