php array นั่งงมอยู่นานมากแล้วครับ ไม่รุ้จะทำยังไง
Array ( [2012-11-27] => 9 [2012-11-28] => 9 [2012-11-29] => 1 [2012-11-30] => 1 [2012-12-01] => 1 [2012-12-02] => 1 [2012-12-03] => 1 [2012-12-04] => 1 [2012-12-05] => 1 [2012-12-06] => 2 [2012-12-07] => 2)
จาก array ข้างบนนะครับ ผมอยากจะได้ค่าเพื่อไปบันทึกใน mysql เป็น
insert into tb_name (startd,endd,status) value ('2012-11-27','2012-11-28',9);
insert into tb_name (startd,endd,status) value ('2012-11-29','2012-12-05',1);
insert into tb_name (startd,endd,status) value ('2012-12-06','2012-12-07',2);
ไม่ทราบว่ามีแนวทางทำได้ไหมครับ
ขอบคุณครับTag : PHP, MySQL
Date :
2012-10-05 10:56:46
By :
panya
View :
1187
Reply :
9
ใช้ foreach กับ Array ครับ ตัวอย่างก็
Code (PHP)
<?php
$arr = array(1, 2, 3, 4);
foreach ($arr as &$value) {
// คำสั่ง Insert
}
unset($value);
?>
Date :
2012-10-05 11:05:39
By :
Daydev
ขอบคุณครับ ผมก็ใช้ foreach แหละ แต่พอดีค่าที่ต้องการมันเป็นช่วงๆ ครับ ก็เลยงงว่าจะเก็บค่าแบบไหน
Date :
2012-10-05 11:13:24
By :
jonajo
อันนี้คือตามความเข้าใจของผมนะครับ คือคุณอยากให้ insert โดยแยกกลุ่มของ status แล้วก็แยกแต่ละกลุ่มอีกว่า ในกลุ่มนั้น วันไหนน้อยสุดและมากสุด เอามา insert ใช่หรือเปล่าครับ
Date :
2012-10-05 11:29:38
By :
maxairzoom
ใช่เลยครับคุณ jirawat ผมติดอยู่ตรงนี้แหละ พยายามหลายวิธีแล้ว
Date :
2012-10-05 11:32:01
By :
jonajo
เดียวขอลองดูก่อนครับ นึกวิธีไว้อยุ่แต่ไม่แน่ใจว่าจะเวิกหรือเปล่า
Date :
2012-10-05 12:25:45
By :
maxairzoom
นึกไม่ค่อยออกเหมือนกัน ข้อมูลมาแบบนี้ไม่รู้จะเรียกยังไง เลยเขียนแบบโง่ๆ แยกไว้ในแต่ละ array ในแต่ละกลุ่ม เสร็จแล้วก็เอามาหาวันน้อยทีั่สุดกับมากที่สุด แล้วค่อยเอามา insert ลง DB ถ้ากลัววันไม่เรียงมากไปน้อย เอา sort() ไปครอบ $b1,$b2 ดูครับมันน่าจะเรียงจากมากไปน้อยให้ได้ วิธีมันอาจจะไม่ค่อยเวิกครับ ยังไงก็ลองดูก่อนครับ
Code (PHP)
$a = array( "2012-11-27" => "9","2012-11-28" => "9","2012-11-29" => "1","2012-11-30" => "1","2012-12-01" => "1","2012-12-02" => "1","2012-12-03" => "1","2012-12-04" => "1","2012-12-05" => "1","2012-12-06" => "2","2012-12-07" => "2");
reset($a);
for($i = 0 ; $i<count($a);$i++){
$val = current($a);
$key = key($a);
if($val == "1"){
$b1[] = $key;
}else if($val == "2"){
$b2[] = $key;
}else if($val == "9"){
$b9[] = $key;
}
next($a);
}
echo $b1[0];
echo "-";
echo $b1[count($b1)-1];
Date :
2012-10-05 15:24:18
By :
maxairzoom
Code (PHP)
$data = ข้อมูล array ที่จะใช้
array_multisort(array_values($data), array_keys($data), $data);
$result = array();
foreach ( $data as $key => $val ) {
$result[$val][] = $key;
}
foreach ( $result as $key => $val ) {
$count = count($val);
$sql = "insert into tb_name (startd,endd,status) value ('{$val[0]}','{$val[$count-1]}',{$key})";
echo $sql."<br />";
}
อันนี้แนวความคิดผมคือ มาจัดรูปแบบ array ใหม่ครับ
ถูกผิดยังไง ก็ขออภัยครับ
ประวัติการแก้ไข 2012-10-05 15:46:46 2012-10-05 15:52:02 2012-10-05 15:53:59
Date :
2012-10-05 15:45:55
By :
codetotti
ขอบคุณครับคุณ jirawat เป็นแนวทางที่ดีมากๆ เลยครับ
ผมลองพยายามปรับใช้ดูครับ
Date :
2012-10-05 15:46:39
By :
jonajo
Load balance : Server 00