Php 使用数组\计数\值获取两个相同的值
我有一个数组,我想得到所有不同的值 我的代码运行良好,直到有一点Php 使用数组\计数\值获取两个相同的值,php,arrays,Php,Arrays,我有一个数组,我想得到所有不同的值 我的代码运行良好,直到有一点 $array_for_19_2=[ ["A 1","A 1","A 1","A 2","A 3","A 2","A 1","A 3","A 2","A 1","A 3","A 3","A 2","A 1","A 2"], ["A a","A a","A c","A a","A c","A c","A c","A a","A a","A c","A c","A a","A a","A a","A c"], ["A X","A Y",
$array_for_19_2=[
["A 1","A 1","A 1","A 2","A 3","A 2","A 1","A 3","A 2","A 1","A 3","A 3","A 2","A 1","A 2"],
["A a","A a","A c","A a","A c","A c","A c","A a","A a","A c","A c","A a","A a","A a","A c"],
["A X","A Y","A Z","A Z","A Z","A Y","A X","A X","A X","A X","A Z","A Z","A X","A Z","A Y"],
["1 a","1 b","1 a","1 a","1 b","1 c","1 b","1 c","1 b","1 a","1 a","1 c","1 b","1 a","1 a"],
["2 a","2 a","2 a","2 a","2 a","2 a","2 a","2 b","2 b","2 a","2 a","2 b","2 a","2 b","2 b"],
["3 b","3 c","3 b","3 c","3 a","3 b","3 c","3 b","3 b","3 b","3 c","3 c","3 a","3 c","3 b"],
["a X","a X","a Z","a Y","a Z","a X","a Y","a Z","a Z","a Z","a X","a X","a Y","a Y","a Z"],
["b Z","b Z","b X","b Z","b Z","b Z","b Z","b X","b Y","b Y","b X","b X","b Y","b Y","b Z"],
["c Y","c Y","c Y","c Y","c Z","c Z","c X","c X","c Z","c Y","c Y","c X","c Z","c Y","c X"],
["1 Z","1 Z","1 X","1 Y","1 X","1 Z","1 X","1 Y","1 Y","1 Z","1 X","1 Z","1 Y","1 Y","1 Y"],
["2 X","2 X","2 Y","2 Z","2 Y","2 X","2 X","2 Z","2 Y","2 Y","2 Y","2 X","2 Y","2 X","2 X"],
["3 X","3 X","3 Y","3 X","3 Y","3 Y","3 Y","3 X","3 Z","3 X","3 X","3 Y","3 Y","3 X","3 Y"]];
foreach (array_count_values($array[$i]) as $key => $value) {
if(strrpos($key, "A")===0 && is_numeric(substr($key,2)))
{$keycount1++;}
else if(strrpos($key, "A")===0 && !is_numeric(substr($key,2))){
array_push($lettersarray, substr($key, 2));
}
$probabilty=round(($value/count($array[$i])),2);
echo "$key - <strong>$value</strong> <br/>Probability: $probabilty<br/>";
$names=str_replace(' ', '', $key);
$newarray[$key]=$probabilty;
}
为什么要两次获得相同的值?这将返回所有值的计数
$res = array_icount_values ($array);
echo '<pre>';print_r($res);
function array_icount_values($arr, $lower = true) {
$arr2 = array();
if (!is_array($arr['0'])) {
$arr = array($arr);
}
foreach ($arr as $k => $v) {
foreach ($v as $v2) {
if ($lower == true) {
$v2 = strtoupper($v2);
}
if (!isset($arr2[$v2])) {
$arr2[$v2] = 1;
} else {
$arr2[$v2]++;
}
}
}
return $arr2;
}
$res=array\u icount\u值($array);
回声';印刷品(港币);;
函数数组\u i计数\u值($arr,$lower=true){
$arr2=数组();
如果(!is_数组($arr['0'])){
$arr=阵列($arr);
}
foreach($arr为$k=>$v){
foreach($v作为$v2){
如果($lower==true){
$v2=strtoupper($v2);
}
如果(!isset($arr2[$v2])){
$arr2[$v2]=1;
}否则{
$arr2[$v2]++;
}
}
}
返回$2;
}
我不明白你想要什么。你能澄清一下吗?我试试看。我有一个数组,我需要得到所有的唯一值,以及它们有多少,然后计算每个唯一值的概率。顺便说一句,一些代码做了一些其他的事情。代码对我来说很好,请看,谢谢Paul尝试。我明白了,它是有效的,但是为什么它不适合我。。。字母都是一样的(我的意思是没有其他语言的字母),但我得到了错误的结果…这可能会帮助你。它将返回所有值的计数,直到得到相同的结果
$res = array_icount_values ($array);
echo '<pre>';print_r($res);
function array_icount_values($arr, $lower = true) {
$arr2 = array();
if (!is_array($arr['0'])) {
$arr = array($arr);
}
foreach ($arr as $k => $v) {
foreach ($v as $v2) {
if ($lower == true) {
$v2 = strtoupper($v2);
}
if (!isset($arr2[$v2])) {
$arr2[$v2] = 1;
} else {
$arr2[$v2]++;
}
}
}
return $arr2;
}