2017-07-03 23 views
0

surveydoneで始まるすべてのカラムを合計する数式が必要です。私の例では、私はsurveydoneから始まる10列を持っています。この式を見つけるのを手伝ってもらえますか?PHP SUM IFカラム条件付きファンクション

{"id":"7","username":"Thomas","survey1":"valide","surveytoken1":"EuLwfqJI5UYLgK2LQ7jS","surveytokenvalid1":"1","surveydone1":"1","surveytoken2":"EuLwfqJI5UYLgK2LQ7jS","surveytokenvalid2":"1","surveydone2":"1" [...] "surveytokenvalid10":"1","surveydone10":"1"} 

、ここでは、PHPで私のコードです:

$user_username = $_SESSION['auth']->username; 
    $user['username'] = $user_username;  
    $req = $pdo->prepare('SELECT * FROM data WHERE (username = ?)'); 
    $req->execute([$user_username]); 
    $surveyuser = $req->fetch(); 
    echo json_encode($surveyuser); 
ここ
+0

なぜSQLで実行しないのですか? 'SELECT surveydone1 + surveydone2 + surveydon3 + ... AS surveytotal FROM data' – Barmar

+0

ループトラフを使ってキーのサブストリングを探すのはなぜですか? – Vector

+0

これは、データの正規化が不良であることを示しています。それぞれの調査数を表の別々の行に数えさせる方がよいでしょう。 – Barmar

答えて

0

は、私が見つけたことをどうにかしてきた答えは、私はPHPを持っているエコーjson_encode下に見つけてくださいあなた

ありがとうございました働く

$user_username = $_SESSION['auth']->username; 
    $user['username'] = $user_username;  
    $req = $pdo->prepare('SELECT * FROM data WHERE (username = ?)'); 
    $req->execute([$user_username]); 
    $surveyuser = $req->fetch(); 
    echo json_encode($surveyuser); 

    $surveyuserarray = json_decode(json_encode($surveyuser), True); 
    $surveyuser2 = json_encode($surveyuser); 

    foreach($surveyuserarray as $key => $value){ 
    if (strpos($key, 'surveydone') === 0) { 
     $only_point[$key] = $value; 
     } 
    } 

    $total_points=array(); 
    $total_points['totalpoints']=array_sum($only_point); 

    echo ($surveyuser2); 
    echo json_encode($total_points);