PHP获取二维数组中指定Key的重复Value

Posted leeon_l

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHP获取二维数组中指定Key的重复Value相关的知识,希望对你有一定的参考价值。

<?php

/**
 * 判断二维数组中指定Key是否存在重复Value
 * @param array $arrInput 二维数组
 * @param string $strKey 键名
 * @return bool
 */
function hasRepeatedValues($arrInput, $strKey)

    //参数校验
    if (!is_array($arrInput) || empty($arrInput) || empty($strKey)) 
        return false;
    

    //获取数组中所有指定Key的值,如果为空则表示键不存在
    $arrValues = array_column($arrInput, $strKey);
    if (empty($arrValues)) 
        return false;
    

    if (count($arrValues) != count(array_unique($arrValues))) 
        return true;
    

    return false;


/**
 * 获取二维数组中指定Key的重复Value
 * @param array $arrInput 二维数组
 * @param string $strKey 键名
 * @return bool|string 重复的键值(以逗号分隔)
 */
function getRepeatedValues($arrInput, $strKey)

    //参数校验
    if (!is_array($arrInput) || empty($arrInput) || empty($strKey)) 
        return false;
    

    //获取数组中所有指定Key的值,如果为空则表示键不存在
    $arrValues = array_column($arrInput, $strKey);
    if (empty($arrValues)) 
        return false;
    

    $arrUniqueValues = array_unique($arrValues);
    $arrRepeatedValues = array_unique(array_diff_assoc($arrValues, $arrUniqueValues));
    return implode($arrRepeatedValues, ',');



//test
$arrTest = [
    [
        'id'    => 1,
        'name'  => 'test1',
    ],
    [
        'id'    => 1,
        'name'  => 'test2',
    ],
    [
        'id'    => 1,
        'name'  => 'test3',
    ],
    [
        'id'    => 2,
        'name'  => 'test4',
    ],
    [
        'id'    => 2,
        'name'  => 'test5',
    ],
    [
        'id'    => 3,
        'name'  => 'test6',
    ]
];
echo hasRepeatedValues($arrTest, 'id') . "\\n";
echo getRepeatedValues($arrTest, 'id') . "\\n";

感谢@qiaoweizhen提出了另一种更简洁地实现方式~

function test($arr, $key)

    $arr = array_count_values(array_column($arr, $key));
    return array_filter($arr, function ($value) 
        if ($value > 1) 
            return $value;
        
    );

以上是关于PHP获取二维数组中指定Key的重复Value的主要内容,如果未能解决你的问题,请参考以下文章

php获取数组中指定值的下标

返回数组中指定的一列

PHP二维数组根据某个元素(key)去重

numpy使用[]语法索引二维numpy数组中指定行列位置的数值内容(access value at certain row and column in numpy array)

map中指定key的值能取出来吗

php返回数组中指定的一列方法是啥?