มันจำเป็นต้องเขียนแบบนี้ไหม๋ครับ ?
$arr= array(
1=>"มกราคม",
2=>"กุมภาพันธ์");
ถ้าเขียนแบบนี้
$month= array("มกราคม","กุมภาพันธ์");
$i=1;
foreach($arr as $monthloop){
$monthloop= "<option value=\"$i\">$monthloop[$i]</option>";
$i++;
}
พอจะได้ไหม๋ครับ?
ถ้าใช้ foreach จะกำหนดค่าให้
value=1, 2, 3,..., 12 ได้ยังไงครับ php มีคำสั่งนับจำนวนค่าที่อยู่ใน array บ้างไหม๋ครับ ?
หมายถึงอย่างงี้ปะ
<?
function yearloop($oldyear,$lastyear, $select_year = null)
{
for ($curyear=$oldyear;$curyear<=$lastyear;$curyear++)
{
$yearloop .= "<option value=\"$curyear\"";
if($select_year == $curyear)
$yearloop .=" selected ";
$yearloop .= ">".$curyear."</option>";
}
return $yearloop;
}
?>
edit เพิ่ม = null เด๋ว error
เพิ่ม
$select_year = null ... อ๋อคือจะกำหนดค่าเริ่มต้นให้เป็นค่า null แล้วเรียกใช้ก็ใส่ค่าแค่ 2 ค่าพอใช่ไหม๋ครับ ก็จะเป็น
<?echo yearloop(2500, 2554) ?>
เวลามันแสดงตอนแรกมันจะเป็นค่าว่างเปล่า(NULL) ผมเข้าใจถูกไหม๋ครับ
เขียนแบบที่คุณบอกก็ได้ครับง่ายดี ผมใส่ 1,2,3 เป็น key ไปด้วย เผื่อไม่เข้าใจเฉยๆครับ ปกติผมก็กำหนดค่าไปเลยไม่ได้ใส่ 1 2 3
ใช้ foreach แล้ว ถ้าจะให้มัน ปริ้นด้วย ว่าตอนนี้นี้อยู่ key ที่เท่าไหร่
ง่ายๆ ก็คือ ปกติเราเขียน
foreach($month as $value)
มันจะปริ้นเฉพาะค่าที่อยู่ในแต่ละ key ออกมา
ให้เราเปลี่ยนใหม่เป็น
foreach($month as $key => $value)
การแสดงผล และวนลูปเหมือนเดิมทุกอย่างครับ แค่สามารถปริ้นว่าตอนนี้กำลังอยู่ที่ $key เท่าไหร่ออกมาได้
ลอง
foreach($month as $key => $value){
echo "key:$key <br />";
echo "value:$value <br />";
}
ดูครับ จะได้เข้าใจมากขึ้น ที่นี้เราก็แค่เอา value="$key" ในตัว option ครับ