我对数组有疑问。
我制作了一个id的数组。
阵列看起来有点像这样。
$iIds[0] = 12
$iIds[1] = 24
$iIds[2] = 25
$iIds[3] = 25
$iIds[4] = 25
$iIds[5] = 30
现在我需要代码来查看数组中的任何值是否多次。 然后,如果值在数组中3次,则将值注入另一个数组。
我尝试使用array_count_values(),但它返回值作为键。
任何人都可以帮我吗?
答案 0 :(得分:2)
$iIds[0] = 12
$iIds[1] = 24
$iIds[2] = 25
$iIds[3] = 25
$iIds[4] = 25
$iIds[5] = 30
$counts = array_count_values($iIds);
$present_3_times = array();
foreach($counts as $v=>$count){
if($count==3)//Present 3 times
$present_3_times[] = $v;
}
答案 1 :(得分:2)
将数组翻转回你想要的方式
$ cnt = array_count_values($ iIds);
$ filtered = array_filter($ cnt,create_function('$ x','return $ x == 3;'));
$ final = array_flip($ filtered);
或
array_flip(array_filter( array_count_values($iIds), create_function('$x', 'return $x == 3;')));
请参阅:http://codepad.org/WLaCs5Pe
修改强>
如果最终数组中有多个值的机会,我建议不要翻转过滤后的数组,只需使用array_keys,这样就会变成:
$cnt = array_count_values($iIds);
$filtered = array_filter( $cnt, create_function('$x', 'return $x == 3;'));
$final = array_keys($filtered);
答案 2 :(得分:1)
对于create array unique use array_unique
php函数,然后重新排列数组使用array_values
php函数的键,如下所示。
$iIds[0] = 12 ;
$iIds[1] = 24 ;
$iIds[2] = 25 ;
$iIds[3] = 25 ;
$iIds[4] = 25 ;
$iIds[5] = 30 ;
$unique_arr = array_unique($iIds);
$unique_array = array_values($unique_arr);
print_r($unique_array);
获取值数组在数组中作为重复值<3>
$iIds[0] = 12 ;
$iIds[1] = 24 ;
$iIds[2] = 25 ;
$iIds[3] = 25 ;
$iIds[4] = 25 ;
$iIds[5] = 30 ;
$arr = array_count_values($iIds);
$now_arr = array();
foreach($arr AS $val=>$count){
if($count == 3){
$now_arr[] = $val;
}
}
print_r($now_arr);
感谢