0
<?php function ss($s1, $s2, $s3, $s4, $s5, $s6) {
  $sonucArray = array("alti" => 0, "bes" => 0, "dort" => 0, "uc" => 0, "iki" => 0);
  $sayiArray = array($s1, $s2, $s3, $s4, $s5, $s6);
  $sayiArraySql = join(',',$sayiArray);  
  $query = mysql_query("select * from loto where 
                                  s1 in ($sayiArraySql) or
                                  s2 in ($sayiArraySql) or
                                  s3 in ($sayiArraySql) or
                                  s4 in ($sayiArraySql) or
                                  s5 in ($sayiArraySql) or
                                  s6 in ($sayiArraySql)");

  while ($record = mysql_fetch_array($query)) {
      $controlArray = array($record["s1"],$record["s2"],$record["s3"],$record["s4"],$record["s5"],$record["s6"]);
      $diffArray = array_diff($sayiArray,$controlArray);

      if (count($diffArray) == 0)
          $sonucArray["alti"]++;
      else if (count($diffArray) == 1)
          $sonucArray["bes"]++;
      else if (count($diffArray) == 2)
          $sonucArray["dort"]++;
      else if (count($diffArray) == 3)
          $sonucArray["uc"]++;
      else if (count($diffArray) == 4)
          $sonucArray["iki"]++;      
  }

  return $sonucArray;
}

mysql_fetch_array; あまりにも多くの CPU を使用し、高速ではありません!

「s1-s2-s3-s4-s5-s6」は整数です。

代わりに、コードは何であるべきですか?私はphpが不十分であることを知っています。何人かは「mysql_fetch_row」を提案してくれましたが、適応して書き込むことができませんでした

私は何をすべきですか?

4

1 に答える 1

0

mysql_fetch_row を使用した関数:

<?php 
function ss($s1, $s2, $s3, $s4, $s5, $s6) 
{
    $sonucArray = array("alti" => 0, "bes" => 0, "dort" => 0, "uc" => 0, "iki" => 0);
    $sayiArray = array($s1, $s2, $s3, $s4, $s5, $s6);
    $sayiArraySql = join(',',$sayiArray);  
    $query = mysql_query("select s1, s2, s3, s4, s5, s6 from loto where 
                              s1 in ($sayiArraySql) or
                              s2 in ($sayiArraySql) or
                              s3 in ($sayiArraySql) or
                              s4 in ($sayiArraySql) or
                              s5 in ($sayiArraySql) or
                              s6 in ($sayiArraySql)");

    while ($record = mysql_fetch_row($query)) 
    {
        $controlArray = array($record[0],$record[1],$record[2],$record[3],$record[4],$record[5]);
        $diffArray = array_diff($sayiArray,$controlArray);

        if (count($diffArray) == 0)
            $sonucArray["alti"]++;
        else if (count($diffArray) == 1)
            $sonucArray["bes"]++;
        else if (count($diffArray) == 2)
            $sonucArray["dort"]++;
        else if (count($diffArray) == 3)
            $sonucArray["uc"]++;
        else if (count($diffArray) == 4)
            $sonucArray["iki"]++;      
    }
    return $sonucArray;
}

mysql_fetch_row は、返される配列のインデックスとしてフィールド名の代わりに整数を使用しています。$record[0] は、SQL リクエストによると、行の最初のフィールドになります。そのため、* だけでなく各フィールド名をリクエストに書き込んで、順序が一致していることを確認します。

それが役に立ったことを願っています。

于 2016-01-05T11:03:03.810 に答える