我怎样才能找到两个数字之间的匹配。如果roosters_A
的权重等于roosters_B
的权重。如果匹配,这两个配对将不会再次匹配,我有一个取消设置函数。
下面是我的代码:
$roosters = array(
array('weight' => 2000),
array('weight' => 1810),
array('weight' => 1810),
array('weight' => 1600),
array('weight' => 1800),
array('weight' => 1915),
array('weight' => 1700),
array('weight' => 2000),
array('weight' => 1915),
array('weight' => 1800)
);
if(sizeof($roosters) >= 2) {
$i = 1;
$match = 0;
$roosters_A = $roosters[0];
while(sizeof($roosters) > $i and $match == 0) {
$roosters_B = $roosters[$i];
if($roosters_A['weight'] == $roosters_B['weight']) {
echo "$i. With Pair ".$roosters_A['weight'].' '.$roosters_B['weight'].'<br>';
$match = 1;
} else {
echo "$i. No Pair ".$roosters_A['weight'].' '.$roosters_B['weight'].'<br>';
$match = 0;
}
$i++;
unset($roosters_B);
}
if($match == 1) {
unset($roosters_A);
}
}
我想这样显示:
1. With Pair 2000 2000
2. With Pair 1810 1810
3. No Pair 1600
4. With Pair 1800 1800
5. With Pair 1915 1915
5. No Pair 1700
6. With Pair 2000 2000
7. With Pair 1915 1915
8. With Pair 1800 1800
你能帮帮我吗?我很难找到一种方法来匹配它而不重复,也不使用任何数据库来显示这条记录。非常感谢那些愿意帮助我的人。我想这对你来说很容易。
发布于 2013-09-30 18:42:20
更新为还可处理3对或更多对
您可以这样做:
$roosters = array(
array('weight' => 2000),
array('weight' => 1810),
array('weight' => 1810),
array('weight' => 1600),
array('weight' => 1800),
array('weight' => 1915),
array('weight' => 1700),
array('weight' => 2000),
array('weight' => 1915),
array('weight' => 1800),
//added
array('weight' => 1800),
array('weight' => 1700),
array('weight' => 2000),
array('weight' => 1917),
array('weight' => 1800)
);
$result=array();
foreach ($roosters as $rooster) {
$key=$rooster['weight'];
if (isset($result[$key])) {
$result[$key]=$result[$key]+1;
} else {
$result[$key]=1;
}
}
foreach ($result as $key=>$value) {
switch ($value) {
case 1 : echo 'No Pair'; break;
case 2 : echo 'With Pair'; break;
case 3 : echo 'Three Pairs'; break;
default : echo 'Multiple Pairs'; break;
}
for ($i=0;$i<$value;$i++) {
echo ' '.$key;
if ($i==1) break; //break if more than two
}
echo '<br>';
}
输出
Three Pairs 2000 2000
With Pair 1810 1810
No Pair 1600
Multiple Pairs 1800 1800
With Pair 1915 1915
With Pair 1700 1700
No Pair 1917
上面构建了一个包含唯一weights
的$result
-array,以及$rooster
中有多少个这样的weights
。最后输出结果,通知每个weight
中是否有一个或多个。
https://stackoverflow.com/questions/19091973
复制相似问题