$data = array();
$tempQuery = "SELECT ta.sitecode, ta.ksitename, ta.Boreholename, ta.limitDifference, ta.differenceYN, ta.alarmYN, oi.gb_point, ta.limitBattery FROM temperaturealarm ta INNER JOIN onsiteinfo oi ON ta.ksitename = oi.ksitename AND ta.Boreholename = oi.Boreholename ORDER BY ta.ksitename;";
$tempResult = mysqli_query($db, $tempQuery);
while ($tempRow = mysqli_fetch_assoc($tempResult)) {
$sitecode = $tempRow['sitecode'];
$ksitename = $tempRow['ksitename'];
$borehole = $tempRow['Boreholename'];
$limitDifference = $tempRow['limitDifference'];
$differenceYN = $tempRow['differenceYN'];
$alarmYN = $tempRow['alarmYN'];
$gb_point = $tempRow['gb_point'];
$limitBattery = $tempRow['limitBattery'];
$data[$ksitename][$borehole]['limitDifference'] = $limitDifference;
$data[$ksitename][$borehole]['differenceYN'] = $differenceYN;
$data[$ksitename][$borehole]['alarmYN'] = $alarmYN;
$data[$ksitename][$borehole]['gb_point'] = $gb_point;
$data[$ksitename]['limitBattery'] = $limitBattery;
}
ksitename || borehole || limitDifference
SiteA || BH1 || 10
SiteA || BH2 || 15
SiteB || BH1 || 8
SiteB || BH3 || 12
이 데이터를 기반으로 $data 배열이 어떻게 구성될지 살펴보겠습니다. 각 행을 순회하면서 $data 배열에 값들을 저장합니다:
첫 번째 행:
ksitename = "SiteA", borehole = "BH1", limitDifference = 10
$data["SiteA"]["BH1"]["limitDifference"] = 10;
두 번째 행:
ksitename = "SiteA", borehole = "BH2", limitDifference = 15
$data["SiteA"]["BH2"]["limitDifference"] = 15;
세 번째 행:
ksitename = "SiteB", borehole = "BH1", limitDifference = 8
$data["SiteB"]["BH1"]["limitDifference"] = 8;
네 번째 행:
ksitename = "SiteB", borehole = "BH3", limitDifference = 12
$data["SiteB"]["BH3"]["limitDifference"] = 12;
최종적으로, $data 배열은 다음과 같은 구조를 가질 것입니다:
php
Copy code
$data = [
"SiteA" => [
"BH1" => ["limitDifference" => 10],
"BH2" => ["limitDifference" => 15]
],
"SiteB" => [
"BH1" => ["limitDifference" => 8],
"BH3" => ["limitDifference" => 12]
]
];
이 배열은 각 사이트(ksitename)에 대해, 그 사이트의 각 시추공(borehole)에 대한 limitDifference 값을 저장합니다. 따라서, 특정 사이트의 특정 시추공에 대한 limitDifference 값을 쉽게 찾아낼 수 있습니다. 예를 들어, SiteA의 BH1 시추공의 limitDifference 값은 $data["SiteA"]["BH1"]["limitDifference"]을 통해 10으로 접근할 수 있습니다.
1)
db, tempQuery);는 이 테이블에 대한 쿼리를 실행하고, 그 결과를 $tempResult에 저장합니다. 이후 mysqli_fetch_assoc(tempResult)를 호출할 때마다, 이 테이블의 한 행씩 반환됩니다. 첫 번째 호출에서는 id=1, name=Alice, age=30인 첫 번째 행이 반환되고, 그 다음 호출에서는 id=2, name=Bob, age=25인 두 번째 행이 반환됩니다.
이 과정은 $tempResult에 더 이상 행이 없을 때까지 계속됩니다. 각 호출마다 반환된 행은 연관 배열 형태로 제공되어, 열 이름을 키로 사용하여 각 값을 액세스할 수 있습니다. 예를 들어, $tempRow['name']은 현재 행의 name 열의 값을 반환합니다.
2)
ksitename][$borehole]['limitDifference'] = $limitDifference;
=> 반복문 실행 순서별 각 ksitename 별 borehole안에 있는 limitDifference의 값은
해당 반복문 순서의 $limitBattery = $tempRow['limitBattery'];의 값이 들어감