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的主要内容,如果未能解决你的问题,请参考以下文章
numpy使用[]语法索引二维numpy数组中指定行列位置的数值内容(access value at certain row and column in numpy array)