-1

2 つの数字の一致を見つける方法を教えてください。roosters_Aの重みが の重みと等しい場合roosters_B。一致する場合、2つのペアは再び一致しなくなりますが、これには未設定の機能がありました。

これが私のコードです:

$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

手伝って頂けますか?繰り返したり、データベースを使用してこのレコードを表示したりせずに、一致させる方法を見つけるのに苦労しています。私を助けてくれる人々に感謝します。あなたにとっては簡単だと思います。

4

2 に答える 2

0

車輪を再発明するのは素晴らしいアイデアです。幸運を!

しかし、場合によってはPHPでも利用可能な関数がいくつかあるので、それを使用することもできます。

あなたの場合、例えばこれら2つ

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]「ペアあり」を取得

http://www.php.net/manual/en/function.array-intersect.php

$pairs_array = array_intersect($roosters_A, $roosters_B);
于 2013-09-30T10:44:26.730 に答える
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 '&nbsp;'.$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

上記は、$resultunique を保持する -array を構築し、そのうちのいくつが に存在するweightsかを示します。最後に結果を出力し、それぞれの が 1 つ以上あるかどうかを通知します。weights$roosterweight

于 2013-09-30T10:42:19.703 に答える