 |
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 :
1224 |
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 |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
|
|