|
|
|
ขอถามเกี่ยวกับการ Avg Array PHP แบบหลายฟิวส์หน่อยค่ะ |
|
|
|
|
|
|
|
จากโค๊ดด้านล่างจะสามารถดึงข้อมูลได้แค่ เรคอร์ดสุดท้าย
และคำนวณค่า Avg ไม่ตรง ค่ะ
ช่วยหน่อยนะค่ะ พยายามมาหลายวันแล้วค่ะ
Code (PHP)
$scores = array($objResult["B_A11"],$objResult["B_B11"],$objResult["B_C11"],$objResult["B_D11"],
$objResult["B_A12"],$objResult["B_B12"],$objResult["B_C12"],$objResult["B_D12"],
$objResult["B_A13"],$objResult["B_B13"],$objResult["B_C13"],$objResult["B_D13"],
$objResult["B_A14"],$objResult["B_B14"],$objResult["B_C14"],$objResult["B_D14"],
$objResult["B_A15"],$objResult["B_B15"],$objResult["B_C15"],$objResult["B_D15"],
$objResult["B_A16"],$objResult["B_B16"],$objResult["B_C16"],$objResult["B_D16"],
$objResult["B_A17"],$objResult["B_B17"],$objResult["B_C17"],$objResult["B_D17"],
$objResult["B_A18"],$objResult["B_B18"],$objResult["B_C18"],$objResult["B_D18"],
$objResult["B_A21"],$objResult["B_B21"],$objResult["B_C21"],$objResult["B_D21"],
$objResult["B_A22"],$objResult["B_B22"],$objResult["B_C22"],$objResult["B_D22"],
$objResult["B_A23"],$objResult["B_B23"],$objResult["B_C23"],$objResult["B_D23"],
$objResult["B_A24"],$objResult["B_B24"],$objResult["B_C24"],$objResult["B_D24"],
$objResult["B_A25"],$objResult["B_B25"],$objResult["B_C25"],$objResult["B_D25"],
$objResult["B_A26"],$objResult["B_B26"],$objResult["B_C26"],$objResult["B_D26"],
$objResult["B_A27"],$objResult["B_B27"],$objResult["B_C27"],$objResult["B_D27"],
$objResult["B_A28"],$objResult["B_B28"],$objResult["B_C28"],$objResult["B_D28"]);
$score_count = count($scores);
$score_sum = array_sum($scores);
$mean_average = $score_sum / $score_count;
echo number_format($mean_average , 2);
ฟิวส
,[B_A11]
,[B_B11]
,[B_C11]
,[B_D11]
,[B_A12]
,[B_B12]
,[B_C12]
,[B_D12]
,[B_A13]
,[B_B13]
,[B_C13]
,[B_D13]
,[B_A14]
,[B_B14]
,[B_C14]
,[B_D14]
,[B_A15]
,[B_B15]
,[B_C15]
,[B_D15]
,[B_A16]
,[B_B16]
,[B_C16]
,[B_D16]
,[B_A17]
,[B_B17]
,[B_C17]
,[B_D17]
,[B_A18]
,[B_B18]
,[B_C18]
,[B_D18]
,[B_A21]
,[B_B21]
,[B_C21]
,[B_D21]
,[B_A22]
,[B_B22]
,[B_C22]
,[B_D22]
,[B_A23]
,[B_B23]
,[B_C23]
,[B_D23]
,[B_A24]
,[B_B24]
,[B_C24]
,[B_D24]
,[B_A25]
,[B_B25]
,[B_C25]
,[B_D25]
,[B_A26]
,[B_B26]
,[B_C26]
,[B_D26]
,[B_A27]
,[B_B27]
,[B_C27]
,[B_D27]
,[B_A28]
,[B_B28]
,[B_C28]
,[B_D28]
Tag : PHP, Ms SQL Server 2008, Ms SQL Server 2012, HTML/CSS, JavaScript, CakePHP
|
ประวัติการแก้ไข 2013-07-29 09:27:42
|
|
|
|
|
Date :
2013-07-29 09:22:12 |
By :
loomoo |
View :
940 |
Reply :
4 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ใน array $objResult เก็บค่าอะไรไว้บ้างครับ
ขอดู โค้ดเต็มๆหน่อยครับ
|
|
|
|
|
Date :
2013-07-29 10:41:48 |
By :
zinlucifer |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ใน $objResult นี้จะมีค่าตัวเลขของฟิลนั้นค่ะ
เช่น array(2.10,3.10,4.10,5.10,6.50,7.00);
แต่เค้าอยากทำให้มีหลายเรคอร์ดค่ะ
โค๊ดด้านล่างเค้าลอง Select มา 2 เรคอร์ด แล้วมาหาค่า Avg แล้ว แต่ก็ไม่ตรงค่ะ
หรือจะเป็นฟังชั่น array_merge ตัวนี้ค่ะ สมมุติว่ามีตัวเลขที่ซ้ำกันมันจะตัดทิ้งไป
Code (PHP)
<?
$strSQLmin_BEF = "SELECT * from SPS where NAME='24.07.2013DS' ";
$objQuerymin_BEF = mssql_query($strSQLmin_BEF) or die ("Error Query [".$strSQLmin_BEF."]");
while($avg_BEF = mssql_fetch_array($objQuerymin_BEF))
{
$scores[] = array($avg_BEF["B_E11"],$avg_BEF["B_F11"],$avg_BEF["B_E12"],$avg_BEF["B_F12"],
$avg_BEF["B_E13"],$avg_BEF["B_F13"],
$avg_BEF["B_E14"],$avg_BEF["B_F14"],
$avg_BEF["B_E15"],$avg_BEF["B_F15"],
$avg_BEF["B_E16"],$avg_BEF["B_F16"],
$avg_BEF["B_E17"],$avg_BEF["B_F17"],
$avg_BEF["B_E18"],$avg_BEF["B_F18"],
$avg_BEF["B_E21"],$avg_BEF["B_F21"],
$avg_BEF["B_E22"],$avg_BEF["B_F22"],
$avg_BEF["B_E23"],$avg_BEF["B_F23"],
$avg_BEF["B_E24"],$avg_BEF["B_F24"],
$avg_BEF["B_E25"],$avg_BEF["B_F25"],
$avg_BEF["B_E26"],$avg_BEF["B_F26"],
$avg_BEF["B_E27"],$avg_BEF["B_F27"],
$avg_BEF["B_E28"],$avg_BEF["B_F28"]);
}
$no = 0;
$a= array();
foreach($scores as $row){
$no++;
$b = array_merge($a, $row);
}
$score_count = count($row);
$score_sum = array_sum($row);
$mean_average = $score_sum / $score_count;
echo number_format($mean_average , 2);
echo '<pre>'. print_r($scores, true). '</pre>';
?>
|
ประวัติการแก้ไข 2013-07-29 11:53:15 2013-07-29 11:55:13 2013-07-29 12:01:11 2013-07-29 12:01:43 2013-07-29 12:04:02 2013-07-29 12:04:41
|
|
|
|
Date :
2013-07-29 11:50:42 |
By :
loomoo |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ตัวอย่างค่าจริงค่ะ
ค่าที่คำนวณถูกจะเป็น 2.23
แต่พอหนูลอง $avg_BEF["ชื่อฟิล"] มันคำนวณไม่ตรงกัน จะได้ 2.20
แต่พอกับเอาตัวเลขพิมพ์ลงไปกลับถูกค่ะ งง จริงๆ
ช่วยหน่อยนะค่ะ
Code
{
$scores[] = array(2.51,2.3,2.12,2.3,2.11,1.46,2.51,2.3,2.36,2.99,2.94,2.38,2.38,2.11,1.99,1.76,1.96,
2.01,2.3,2.39,1.22,2.56,2.4,2.51,2.36,2.38,1.96,2.51,2.3,2.11,2.36,2.4,1.89,2.31,2.11,1.69,2.38,2.4,
2.3,2.01,1.69,2.31,2.11,2,2.51,1.92,2.31,2.4,2.59,1.96,2.97,2,2.98,2.36,3.01,1.92,1.69,2.51,2.31,2,
1.51,1.92,2.2,2.26);
}
Code
Code (PHP)
{
$scores[] = array($avg_BEF["B_E11"],$avg_BEF["B_F11"],
$avg_BEF["B_E12"],$avg_BEF["B_F12"],
$avg_BEF["B_E13"],$avg_BEF["B_F13"],
$avg_BEF["B_E14"],$avg_BEF["B_F14"],
$avg_BEF["B_E15"],$avg_BEF["B_F15"],
$avg_BEF["B_E16"],$avg_BEF["B_F16"],
$avg_BEF["B_E17"],$avg_BEF["B_F17"],
$avg_BEF["B_E18"],$avg_BEF["B_F18"],
$avg_BEF["B_E21"],$avg_BEF["B_F21"],
$avg_BEF["B_E22"],$avg_BEF["B_F22"],
$avg_BEF["B_E23"],$avg_BEF["B_F23"],
$avg_BEF["B_E24"],$avg_BEF["B_F24"],
$avg_BEF["B_E25"],$avg_BEF["B_F25"],
$avg_BEF["B_E26"],$avg_BEF["B_F26"],
$avg_BEF["B_E27"],$avg_BEF["B_F27"],
$avg_BEF["B_E28"],$avg_BEF["B_F28"]);
}
Code
Array
(
[0] => Array
(
[0] => 2.51
[1] => 2.3
[2] => 2.12
[3] => 2.3
[4] => 2.11
[5] => 1.46
[6] => 2.51
[7] => 2.3
[8] => 2.36
[9] => 2.99
[10] => 2.94
[11] => 2.38
[12] => 2.38
[13] => 2.11
[14] => 1.99
[15] => 1.76
[16] => 1.96
[17] => 2.01
[18] => 2.3
[19] => 2.39
[20] => 1.22
[21] => 2.56
[22] => 2.4
[23] => 2.51
[24] => 2.36
[25] => 2.38
[26] => 1.96
[27] => 2.51
[28] => 2.3
[29] => 2.11
[30] => 2.36
[31] => 2.4
)
[1] => Array
(
[0] => 1.89
[1] => 2.31
[2] => 2.11
[3] => 1.69
[4] => 2.38
[5] => 2.4
[6] => 2.3
[7] => 2.01
[8] => 1.69
[9] => 2.31
[10] => 2.11
[11] => 2
[12] => 2.51
[13] => 1.92
[14] => 2.31
[15] => 2.4
[16] => 2.59
[17] => 1.96
[18] => 2.97
[19] => 2
[20] => 2.98
[21] => 2.36
[22] => 3.01
[23] => 1.92
[24] => 1.69
[25] => 2.51
[26] => 2.31
[27] => 2
[28] => 1.51
[29] => 1.92
[30] => 2.2
[31] => 2.26
)
)
|
ประวัติการแก้ไข 2013-07-29 13:30:10
|
|
|
|
Date :
2013-07-29 13:27:39 |
By :
loomoo |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ลองตรวจสอบดูนะครับว่า
ค่าของ $scores[]; ที่ได้จากการ query (บรรทัดที่ 07)
ค่าใน array ทุกตัวมันเท่ากับ
$scores[] = array(2.51,2.3,2.12,2.3,2.11,1.46,2.51,2.3,2.36,2.99,2.94,2.38,2.38,2.11,1.99,1.76,1.96,
2.01,2.3,2.39,1.22,2.56,2.4,2.51,2.36,2.38,1.96,2.51,2.3,2.11,2.36,2.4,1.89,2.31,2.11,1.69,2.38,2.4,
2.3,2.01,1.69,2.31,2.11,2,2.51,1.92,2.31,2.4,2.59,1.96,2.97,2,2.98,2.36,3.01,1.92,1.69,2.51,2.31,2,
1.51,1.92,2.2,2.26);
หรือเปล่านะครับ เพราะผมไม่มี database แต่ผมลองเอา array $socre[] ที่คุณใส่ค่ามาแล้ว
ผลลัพธ์ที่ออกมา คือ 2.23 นะครับ ถ้าคุณรันแล้วผลลัพธ์ไม่ได้ 2.23 ผมว่าน่าจะเกิดจากที่
ผลจากการ query ของบรรทัดที่ 7 มันไม่เท่ากับ array $socre[] ที่คุณ Fix มานะครับ
|
|
|
|
|
Date :
2013-07-29 16:58:45 |
By :
zinlucifer |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 04
|