วิธีการสร้างแอเรย์หลายมิติด้วย PHP
ภาษาอื่นๆ สามารถสร้างแอเรย์หลายมิติได้ง่ายๆ
ภาษา C
Phython
Javascript
ลองมาดู ภาษา PHP กันบ้าง
วิธีแรก
วิธีที่สอง
วิธีที่สาม
ลองมาดูโค้ดที่ผมใช้ในการทดสอบความเร็วกัน
ผลลัพท์การทดสอบความเร็ว
จะเห็นว่าการวนลูป (วิธีแรก) เป็นวิธีที่ช้ามาก และวิธีที่สาม เป็นวิธีที่เร็วสุดๆ
ภาษา C
int array[10][10];
Phython
arr = [[0 for i in range(10)] for j in range(10)]
Javascript
const = new Array(10).fill(0).map(() => new Array(10).fill(0))
ลองมาดู ภาษา PHP กันบ้าง
$array = array();
for ($a = 0; $a <= 10; $a++) {
for ($b = 0; $b <= 10; $b++) {
$array[$a][$b] = 0;
}
}
จะยาวไปไหนมาเข้าเรื่องของบทความนี้กัน จริงๆ PHP ก็สามารถสร้างแอเรย์หลายมิติได้หลายวิธี สิ่งที่ผมอยากรู้คือ วิธีไหนมีประสิทธิภาพมากที่สุด
วิธีแรก
$array = array();
for ($a = 0; $a <= 10; $a++) {
for ($b = 0; $b <= 10; $b++) {
$array[$a][$b] = 0;
}
}
วิธีที่สอง
function second_array($n)
{
return array_fill(0, 11, 0);
}
$array = array_map('second_array', range(0, 10));
วิธีที่สาม
$array = array_fill(0, 11, array_fill(0, 11, 0));
วิธีสั้นๆ ก็มีเนาะ
ลองมาดูโค้ดที่ผมใช้ในการทดสอบความเร็วกัน
// วิธีแรก
$start = microtime(true);
$array = array();
for ($a = 0; $a <= 10; $a++) {
for ($b = 0; $b <= 10; $b++) {
$array[$a][$b] = 0;
}
}
echo '<br><br><br>วิธีแรก '.(microtime(true) - $start);
// print_r($array);
unset($array);
// วิธีที่สอง
$start = microtime(true);
function second_array($n)
{
return array_fill(0, 11, 0);
}
$array = array_map('second_array', range(0, 10));
echo '<br><br><br>วิธีที่สอง '.(microtime(true) - $start);
// print_r($array);
unset($array);
// วิธีที่สาม
$start = microtime(true);
$array = array_fill(0, 11, array_fill(0, 11, 0));
echo '<br><br><br>วิธีที่สาม '.(microtime(true) - $start);
// print_r($array);
unset($array);
ผลลัพท์การทดสอบความเร็ว
วิธีแรก 0.03814697265625
วิธีที่สอง 0.02598762512207
วิธีที่สาม 0.0030994415283203
จะเห็นว่าการวนลูป (วิธีแรก) เป็นวิธีที่ช้ามาก และวิธีที่สาม เป็นวิธีที่เร็วสุดๆ