0

ユーザーが透かしの背後にあるアイテムを推測する必要がある mystique item というアプリケーションがあります。ウォーターマークは時々明らかになり、すべてが完璧に機能していますが、単語の推測に「小さな」問題があります。コンマで区切られた配列に単語を追加し、PHPでその配列を展開していますが、何らかの理由で、最初の単語のみが正しいものとしてキャッチされ、他のすべてが正しくありません。これが私がやったことです。

$gt = getVal('pics','gtext','online',1);
$won = getVal('pics','winner','online',1);

if($won=='no')
{
    $counts = getGen(3);
    $counts2 = getGen(4);

    if($counts2==0) 
    {
         $counts2 = 9999999999999;
    }

    $ccount =  getCount2("$uid","$pid",date('Y-m-d H:i:s',$t1),date('Y-m-d H:i:s',$t2));
    $ccount3 =  getCount3("$uid","$pid");   

    if( $ccount>=$counts || $ccount3>=$counts2)
    {
         echo '4';
    }
    else
    {
        $sp = explode(",",$gt);

        if(in_array($val, $sp)) // guess correct
        { 
            echo '1';
        }
        else// guess wrong
        {
            echo '2';
        }
     }
}

gtextは単語を保存する行です。たとえば、単語にスペースが含まれていますnew iphone,iphone 5s,apple ipad,etc etc)

そして、単語をチェックするコードは次のとおりです。

$.post('guessit.php',{from:1,val:$('#ug').val(),uid:$('#uid').val(),pid:$('#pid').val(),t1:<?php echo $time1; ?>,t2:<?php echo $time3; ?>},function(d){
  if(parseInt(d)==1){
    $.post('guessit.php',{from:2,val:$('#ug').val(),uid:$('#uid').val(),pid:$('#pid').val(),t1:<?php echo $time1; ?>,t2:<?php echo $time3; ?>},function(d1){
      advanced_example($('#uid').val(),'Congratulations!','You are the winner!!',1);
      //setInterval($(location).attr('href','redirecttohome.php'),10000);
    });
  }else if(parseInt(d)==2){
    $.post('guessit.php',{from:3,val:$('#ug').val(),uid:$('#uid').val(),pid:$('#pid').val(),t1:<?php echo $time1; ?>,t2:<?php echo $time3; ?>},function(d1){
      advanced_example($('#uid').val(),'Wrong!','Please try again!',1);              
      //setInterval($(location).attr('href','redirecttohome.php'),10000);
    });
  }else if(parseInt(d)==3){
    advanced_example($('#uid').val(),'Sorry!','Someone else was faster!',1);
    //setInterval($(location).attr('href','redirecttohome.php'),8000);
  }else if(parseInt(d)==4){
    advanced_example($('#uid').val(),'Error!','You already attempted maximum times',1);             
    //setInterval($(location).attr('href','redirecttohome.php'),8000);

}

guessit.php には、最初に示したコードが含まれています。

他にご不明な点がございましたら、お気軽にお問い合わせください。

@AmalMurali次に必要なのは、MySQLにあります:

apple ipad,apple iphone4,apple ipod,iphone4,apple

次のような文字列として必要です。

apple ipad
apple iphone4
apple ipod
iphone4
apple
4

1 に答える 1

1

if条件が希望どおりに機能するようにするには、空白をトリミングする必要があります。

$sp = explode(",",$gt);
$sp = array_map('trim', $sp); //trim all the elements in $sp

要素の先頭または末尾に空白が含まれている場合、次の条件が に評価され、ブロックFALSE内のステートメントがトリガーされます。else

if(in_array($val, $sp)) {

空白が削除された場合in_arrayは機能し、コードは期待どおりに機能するはずです。

于 2013-09-22T12:13:22.797 に答える