如何将一个数组中键中相同的值取出来并定义一个新的数组

图片说明

这个地方打印出来的效果
图片说明

图片说明

$grouping_name = array();
foreach ($userlist as $k2 => $v2) {
$grouping_name[] = $v2['role_id'];
}
var_dump($grouping_name);die;
// $grouping_name 取出来的相同字段值组成的一位数组;
------------分割线---------------
上面的是取单个指定字段组成新数组,下面这个是将所有的组成新的数组,以字段名为健名
$newArr = array();
$keys = array();
foreach ($userlist as $key => $val) {
$keys = array_keys($val);
foreach ($keys as $k=>$v){
$newArr[$v][] = $val[$v];
}
}
var_dump($newArr);die;

你这是在一个数组中,还是多个数组中。 如果一个数组,取相同值的键组合成新的数组数组,用这个函数:

array array_keys ( array $array [, mixed $search_value [, bool $strict = false ]] )

三个参数: 第一个是你要检索的数组;第二个是要匹配的值;第三个可选的,是否严格比较(===)。默认是false。
返回一个数组,就是相同值的键组合成新的数组数组。

示例:
将数组中值为“blue”的键,组合成一个新的数组

<?php
$array  = array( "one" => "blue" ,  "two" => "red" ,  "three" => "green" ,  "four" => "blue" ,  “five”=> "blue" );
$keyArray = array_keys ( $array ,  "blue" );
print_r ($keyArray);
?> 

上面代码将输出:

Array
(
    [0] => one
    [1] => four
    [2] => five
)

-------------------------------------------------分割线--------------

如果userlist是一维数组,应该:

$cont = count($userlist);
foreach($userlist as $k => $v){
    //这里不能$v['group_id']
    $keyArray = array_keys($userlist, $v);
    var_dump($keyArray);
}

或者先判断值是否有相同的

//统计数组userlist的所有的值出现的次数,返回一个数组
//返回数组用userlist数组中的值作为键名,该值在userlist数组中出现的次数作为值。
$countArray = array_count_values($userlist);
foreach($countArray as $k => $v){
    //判断值出现两次或两次以上
    if($v > 1){
        $keyArray = array_keys($userlist, $k);
        var_dump($keyArray);
    }
}

如果是多维数组,不能直接用。 相当于多个数组里比对相同的值。直接取交集,或者逐个判断。你这个还有个问题,如果group_id 跟 rold_id 值相同的情况,如果有这种情况出现,要排除的话,直接用api函数解决不了,自己做个函数吧。