2017-02-13 1 views
1

SO에 대한 해결책을 찾으려고 시도했지만 비슷한 여러 질문을 발견했지만 어느 것도 키 수에 국한되지 않았습니다.while 루프의 특정 키에 대한 배열 합계

각 질문에 주어진 답을 바탕으로 7 명의 승자 중 3 명을 추천하는 알고리즘을 기반으로하는 설문서를 작성하고 있습니다. 테이블에는 10 개의 열이 있습니다. id, question_no, answer 및 point 값을 포함하는 7 개의 열이 있습니다. 다른 8 개 배열 등

Array ([0] => 1 [1] => 1 [2] => A [3] => 5 [4] => 5 [5] => 5 [6] => 5 [7] => 5 [8] => 5 [9] => 5) 

Array ([0] => 6 [1] => 2 [2] => B [3] => 0 [4] => 0 [5] => 0 [6] => 8 [7] => 8 [8] => 0 [9] => 0) 

그리고 :

<?php 
include_once "connect.php"; 

$question = array(); 
$question[1] = mysqli_real_escape_string($con, $_POST['question_01']); 
// the rest of the questions go here 
$question[10] = mysqli_real_escape_string($con, $_POST['question_10']); 

    $i = 0; 
    $array_sum=[]; 
    while ($i < 10){ 
     $i++;  
     $sql = "SELECT * FROM partners WHERE question_no = $i AND answer = '".$question[$i]."'"; 
     $result = mysqli_query($con, $sql); 

     $final_array_1 = array(); 

     while ($row = mysqli_fetch_array($result, MYSQLI_NUM)) 
     { 

     $final_array_1 = $row; 
      $array_sum = array_map(function() { 
       return array_sum(func_get_args()); 
      }, $array_sum, $final_array_1); 
     print_r($final_array_1); 
     echo "<br/>"; 
     } 
} 

이의 출력이 될 것 같은 : 여기

는 코드입니다.

기본적으로 이제는 3에서 9까지의 모든 키 값을 추가해야합니다. 그러나이 값을 "while"에서 얻은 이후에는이를 달성하는 방법을 알 수 없습니다.

또한 사용자가 데이터베이스의 양식에서 선택한 옵션을 저장할 수 있도록 개별 배열을 유지해야합니다.

추가 세부 정보가 필요하면 알려주세요.

+0

배열을 3에서 9까지 반복하고 다른 변수를 각 키의 값으로 증가 시키시겠습니까? – ADyson

+0

@ADyson 예. 그것이 그 아이디어입니다. – SporeDev

+0

... for 루프를 만드는 법을 알고 있습니까? 그 후에 그것은 사소한 것입니다. – ADyson

답변

1

인덱스 3에서 9까지 배열을 루프 처리하고 각 인덱스의 값을 합칠 수 있습니다.

<?php 
include_once "connect.php"; 
$question = array(); 
$question[1] = mysqli_real_escape_string($con, $_POST['question_01']); 
// the rest of the questions go here 
$question[10] = mysqli_real_escape_string($con, $_POST['question_10']); 
$i = 0; 

$sums = array(); //this will hold the sums of all the various indexes 
while ($i < 10) 
{ 
    $i++;  
    $sql = "SELECT * FROM partners WHERE question_no = $i AND answer = '".$question[$i]."'"; 
    $result = mysqli_query($con, $sql); 
    while ($row = mysqli_fetch_array($result, MYSQLI_NUM)) 
    { 
    for ($count = 3; $count <= 9; $count++) { 
     if (!isset($sums[$count]) $sums[$count] = 0; 
     $sums[$count] += $row[$count]; 
    } 
    } 
} 
var_dump($sums); //just for debugging, to show you the totals 
?> 
+0

그리고 마지막으로 "while"에 추가합니까? – SporeDev

+0

데이터베이스의 각 행을 합산한다고 가정하면 예 – ADyson

+0

아, 올바르게 설명하지 않은 것 같습니다. 동일한 배열에 값을 추가하고 있습니다. 내가 의미했던 것은 원래 반복 된 값보다 다음 반복의 값을 더하는 것입니다. 만약 내가 값 (1, 3)을 가지고 있고 다음 반복에서 (5, 2) 인 배열을 가지고 있다면, 합은 (6, 5)가 아닐 것입니다. 4. – SporeDev