我有这个带有for循环的多维数组,我用它来分解函数中的某个数字。
但是我也想使用array_diff_assoc()来获取差异。
for ($i1 = 0; $i1 <= 9; $i1++) {
$scale_0_to_9[$i1];
foreach($splitInThreeArray as $key=>$value) {
if(strlen($value) != '3') {
$value = '';
$scale_0_to_9[$key]['9'] = $value;
$scale_0_to_9[$key]['8'] = $value;
$scale_0_to_9[$key]['7'] = $value;
$scale_0_to_9[$key]['6'] = $value;
$scale_0_to_9[$key]['5'] = $value;
$scale_0_to_9[$key]['4'] = $value;
$scale_0_to_9[$key]['3'] = $value;
$scale_0_to_9[$key]['2'] = $value;
$scale_0_to_9[$key]['1'] = $value;
$scale_0_to_9[$key]['0'] = $value;
}else {
$num_0 = substr_count($value,'0');
$num_1 = substr_count($value,'1');
$num_2 = substr_count($value,'2');
$num_3 = substr_count($value,'3');
$num_4 = substr_count($value,'4');
$num_5 = substr_count($value,'5');
$num_6 = substr_count($value,'6');
$num_7 = substr_count($value,'7');
$num_8 = substr_count($value,'8');
$num_9 = substr_count($value,'9');
$scale_0_to_9[$key]['9'] = $num_9;
$scale_0_to_9[$key]['8'] = $num_8;
$scale_0_to_9[$key]['7'] = $num_7;
$scale_0_to_9[$key]['6'] = $num_6;
$scale_0_to_9[$key]['5'] = $num_5;
$scale_0_to_9[$key]['4'] = $num_4;
$scale_0_to_9[$key]['3'] = $num_3;
$scale_0_to_9[$key]['2'] = $num_2;
$scale_0_to_9[$key]['1'] = $num_1;
$scale_0_to_9[$key]['0'] = $num_0;
}
}
}
我有这个,但它没有用。
array_diff_assoc(
$scale_0_to_9['0'], $scale_0_to_9['1'],
$scale_0_to_9['2'], $scale_0_to_9['3'],
$scale_0_to_9['4'], $scale_0_to_9['5']
)
我试图比较$scale_0_to_9
内的数组并找到至少2个相似度最高的数组。
但它不必以$scale_0_9['0']
为起点。
例如,如果$scale_0_9['2']
!= $scale_0_9['8']
具有不同的值,则可以使用。
只要他们没有相同的价值观。
我需要知道['2'] $key
,因为我需要将两个具有不同值的两者相匹配。
答案 0 :(得分:0)
call_user_func_array('array_diff_assoc',$scale_0_to_9['1']);
答案 1 :(得分:0)
您想要的比较很复杂,而且您的结果定义不明确。在OP中你说明了
我试图比较$ scale_0_to_9中的数组并找到 至少2个最相似的。
稍后:
例如,如果$ scale_0_9 [&#39; 2&#39;]!= $ scale_0_9 [&#39; 8&#39;]有不同 价值也可以。只要他们没有相同的价值观。
在评论中添加:
理想的是他们有完全不同的价值观。但那里 将是他们可能分享共同价值的实例 每个$ scale_0_9 [&#39; x&#39;]
中最多应出现1次值
你想要的东西太难以确定。也就是说,我重写了你发布的内容,使其更加简单。您if(strlen($value)!='3'
周围第一大代码块中的所有内容都可以修剪为几行:
$digits = ['0','1','2','3','4','5','6','7','8','9'];
if(strlen($value)!==3){
//store in each key, an empty string
foreach ($digits as $d){$scale_0_to_9[$key][$d] = '';}
}else{
foreach ($digits as $d){
//store in each key, the # of times the matching digit
//appears in value
$scale_0_to_9[$key][$d] = substr_count($value,$d);
}
}