2016-06-18 17 views
0

whileループはこの例でうまく動作します。whileループは関数phpで動作しません。atherのグローバルフィックス

 $query="SELECT * FROM `ex`"; 
     $result=mysqli_query($link, $query); 

     $Q_X='Q1'; 
        $res=array(0,0,0,0,0); 
       while($report=mysqli_fetch_array($result)){ 
        print_r($report[$Q_X].'<br>'); 

        if($report[$Q_X]=='X1'){ 
         $res[0]=$res[0]+1; 

        }elseif($report[$Q_X]=='X2'){ 
         $res[1]=$res[1]+1; 

        }elseif($report[$Q_X]=='X3'){ 
         $res[2]=$res[2]+1; 

        }elseif($report[$Q_X]=='X4'){ 
         $res[3]=$res[3]+1; 

        }elseif($report[$Q_X]=='X5'){ 
         $res[4]=$res[4]+1; 
        } 
       } 
    list($Q1_1,$Q1_2,$Q1_3,$Q1_4,$Q1_5) = $res; 

    echo $Q1_1.','; 
    echo $Q1_2.','; 
    echo $Q1_3.','; 
    echo $Q1_4.','; 
    echo $Q1_5; 

が、私は機能にそれを置くしようとしたときに、私は複数の値が

を返さ取得するために、配列を使用してから出るの機能を阻止する場合

 $query="SELECT * FROM `ex`"; //new 
     $result=mysqli_query($link, $query); 

      function count_vote($Q_X) { 
       $cont=0; 

       global $result; //new 

       $res=array(0,0,0,0,0); 
       while($report=mysqli_fetch_array($result)){ 

        if($report[$Q_X]=='X1'){ 
         $res[0]=$res[0]+1; 

        }elseif($report[$Q_X]=='X2'){ 
         $res[1]=$res[1]+1; 

        }elseif($report[$Q_X]=='X3'){ 
         $res[2]=$res[2]+1; 

        }elseif($report[$Q_X]=='X4'){ 
         $res[3]=$res[3]+1; 

        }elseif($report[$Q_X]=='X5'){ 
         $res[4]=$res[4]+1; 
        } 
       } 
       if(mysqli_num_rows($result)==$cont){ 
       return $res; 
       } 
      } 


    count_vote("Q1"); 
    list($Q1_1,$Q1_2,$Q1_3,$Q1_4,$Q1_5) = $res; 

    echo $Q1_1.','; 
    echo $Q1_2.','; 
    echo $Q1_3.','; 
    echo $Q1_4.','; 
    echo $Q1_5; 

動作しません。 whileループが終了する前に

私はQ1、Q2で何回も使用するようにしようとしています。

誰かが私はループが関数PHPで


を動作しませんが、このリゾートに

Q1---> X1 >2 
    ---> X2 >1 
    ---> X3 >0 
    ---> X4 >0 
    ---> X5 >0 

Q2---> X1 >1 
    ---> X2 >1 
    ---> X3 >1 
    ---> X4 >0 
    ---> X5 >0 
Q3,Q4.... 

を取得したい問題


   Q1 . Q2 . Q3 . Q4 

user1 | X1 . X3 . X5 . X4 

    user2 | X2 . X2 . X3 . X2 

    user3 | X1 . X1 . X1 . X1 

を見つけるのを助けることができます

list($Q1_1, $Q1_2, $Q1_3, $Q1_4, $Q1_5) = count_vote($result ,"Q1"); 

    echo $Q1_1 . ','; 
    echo $Q1_2 . ','; 
    echo $Q1_3 . ','; 
    echo $Q1_4 . ','; 
    echo $Q1_5 . '<br>'; 


    list($Q2_1, $Q2_2, $Q2_3, $Q2_4, $Q2_5) = count_vote($result ,"Q2"); 

    echo $Q2_1 . ','; 
    echo $Q2_2 . ','; 
    echo $Q2_3 . ','; 
    echo $Q2_4 . ','; 
    echo $Q2_5 . '<br>'; 

が動作しない、それは、

2の

2,1,0,0,0

0,0,0,0,0

insedを与えます1,0,0,0

1,1,1,0,0

答えて

-1

次のコードを試してください:

function count_vote($result ,$Q_X) 
{ 
    $res = array(0, 0, 0, 0, 0); 
    while ($report = mysqli_fetch_array($result)) { 
     if ($report[$Q_X] == 'X1') { 
      $res[0] = $res[0] + 1; 

     } elseif ($report[$Q_X] == 'X2') { 
      $res[1] = $res[1] + 1; 

     } elseif ($report[$Q_X] == 'X3') { 
      $res[2] = $res[2] + 1; 

     } elseif ($report[$Q_X] == 'X4') { 
      $res[3] = $res[3] + 1; 

     } elseif ($report[$Q_X] == 'X5') { 
      $res[4] = $res[4] + 1; 
     } 
    } 
    if (mysqli_num_rows($result) > 0) { 
     return $res; 
    } 
} 


$query = "SELECT * FROM `ex`"; //new 
$result = mysqli_query($link, $query); 

list($Q1_1, $Q1_2, $Q1_3, $Q1_4, $Q1_5) = count_vote($result ,"Q1"); 

echo $Q1_1 . ','; 
echo $Q1_2 . ','; 
echo $Q1_3 . ','; 
echo $Q1_4 . ','; 
echo $Q1_5; 

私はこの問題は、関数内$resultが空グローバルだったので、我々は同様に、コンストラクタでそのをお送りしますという事実にかもしれないと思います。

+0

'関数名は文字列でなければならない ' –

+0

@MoazMabrok' count_vote( "Q1");の前のドル記号を取り除いた – bucketman

+0

これで '0,0,0,0、 Q1のための2,1,0,0,0のような数字の代わりに「0」を入力してください。 –

-1

あなたは愚かなエラーを起こしました。あなたは$ contを増やしていません。すなわち、

$cont=0; 

は、次に、あなたがチェックした:

if(mysqli_num_rows($result)==$cont){ 
    return $res; 
} 

ので、この条件は0以上だから、私はあなたの改訂版のコードがあることだと思う常に$結果の行数とされて満たされることはありません:

$query="SELECT * FROM `ex`"; //new 
    $result=mysqli_query($link, $query); 

     function count_vote($Q_X) { 
      $cont=0; 

      global $result; //new 

      $res=array(0,0,0,0,0); 
      while($report=mysqli_fetch_array($result)){ 

       if($report[$Q_X]=='X1'){ 
        $res[0]=$res[0]+1; 

       }elseif($report[$Q_X]=='X2'){ 
        $res[1]=$res[1]+1; 

       }elseif($report[$Q_X]=='X3'){ 
        $res[2]=$res[2]+1; 

       }elseif($report[$Q_X]=='X4'){ 
        $res[3]=$res[3]+1; 

       }elseif($report[$Q_X]=='X5'){ 
        $res[4]=$res[4]+1; 
       } 
       $cont++; 
      } 
      if(mysqli_num_rows($result)==$cont){ 
      return $res; 
      } 
     } 


count_vote("Q1"); 
list($Q1_1,$Q1_2,$Q1_3,$Q1_4,$Q1_5) = $res; 

echo $Q1_1.','; 
echo $Q1_2.','; 
echo $Q1_3.','; 
echo $Q1_4.','; 
echo $Q1_5; 

私はそれが役に立ちそうです。

関連する問題