如何在两个数字之间找到匹配项。如果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
你能帮帮我吗?我很难找到匹配它的方法而不重复,也没有使用任何数据库来显示此记录。非常感谢那些能帮助我的人。我认为这对你来说很容易。
答案 0 :(得分:0)
[更新以处理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
上面构建了一个$result
- 数组,该数组包含唯一的weights
,以及weights
中存在的$rooster
中有多少个weight
。最后输出结果,通知每个{{1}}中是否有一个或多个。
答案 1 :(得分:0)
重新发明轮子是一个好主意。祝你好运!
但是,有时甚至 PHP 都有一些可用的功能,你可以使用。
在您的情况下,例如这些两个(
assuming comparing array $roosters_A vs. $roosters_B
and $roosters_A/B is prepared like $roosters_A/B = (array) $roosters['weight'];
)
-
[1] 获取“No Pairs”(=唯一)
http://www.php.net/manual/en/function.array-diff.php
$no_pairs_array = array_diff($roosters_A, $roosters_B);
-
[2] 获取“With Pairs”
http://www.php.net/manual/en/function.array-intersect.php
$pairs_array = array_intersect($roosters_A, $roosters_B);