เรื่องของ แอเรย์
ปกติเวลาเรานึกถึง Array เรามักจะนึกถึงแอเรย์ในรูปแบบนี้
<?
$array[0]=1;
$array[1]=2;
?>
ทีนี้การอ้างถึง ชื่อหรือค่าของ Array ก็ทำได้ไม่ยาก คือ
<?
for ($i=0; $i<count($array); $i++) {
echo "แอเรย์ชื่อ $i มีค่า $array[$i]<br />";
}
?>
ทีนี้ถ้าเป็น Array รูปแบบนี้บ้างละ การอ้างถึงชื่อ และค่าของแอเรย์จะทำอย่างไร
<?
$array[one]=1;
$array[two]=2;
$array[three]=3;
$array[four]=4;
?>
เฉลย
<?
foreach($array as $name => $val) {
echo "แอเรย์ชื่อ $name มีค่า $val<br />";
}
?>
แอเรย์แบบนี้มีประโยชน์อย่างไร ?
ง่ายๆเลย ก็การตรวจสอบค่าซ้ำกันไงครับ เช่น
<?
$color[red]=1;
$color[blue]=1;
$color[red]=1;
foreach($color as $name => $val) {
if (!$ret[$name]) { //ถ้าซ้ำเดิมไม่ต้องแสดงอีก
$ret[$name]=$val;
echo "ค่าสี $name<br />";
}
}
?>
ผลลัพท์
ค่าสี red
ค่าสี blue
หรือการรวมสินค้าในตระกร้าสินค้าไงครับ ถ้ามีสินค้ารายการเดิมซ้ำมาก็ให้เพิ่มจำนวนขึ้นอีก 1
<?
$array=array("1", "1", "4", "2", "1","1", "3", "4", "3", "2" );
$data=array();
for ($i=0; $i<count($array); $i++) {
$data[$array[$i]]++;
}
print_r($data); //แสดงว่าค่าอะไรมีกี่จำนวน
?>
ผลลัพท์
Array ( [1] => 4 [4] => 2 [2] => 2 [3] => 2 )