อันนี้เป็นคำถามที่พันธิพ ไม่รู้ว่าจะเอาไปทำอะไรเหมือนกัน ผมได้เขียนตอบไป เลยเอามาให้ท่านๆดูกัน เผื่อเก็บเอาสิ่งละเล็กสิ่งละน้อย ในคำถามคำตอบ ไปประยุกต์การเขียนโปรแกรมของตนเอง

คำถาม :
คือ ผมต้องการให้ array เก็บ

$arr_column = array(“A”,”B”,”C”,”D”,”E”,”F”,”G”,”H”,”I”,”J”,”K”,”L”,”M”,”N”,”O”,”P”,”Q”,”R”,
“S”,”T”,”U”,”V”,”W”,”X”,”Y”,”Z”,”AA”,”AB”,”AC”,”AD”,”AF”,”AG”,”AH”,”AI”,”AJ”,”AK”,”AL”,
“AM”,”AN”,”AO”,”AP”,”AQ”,”AR”,”AS”,”AT”,”AU”,”AV”,”AW”,”AX”,”AY”,”AZ”,”BA”,”BB”,”BC ฯลฯ

ต่อ ไปเรื่อยๆ จนถึง ZZ หน่ะครับ แต่ทีนี้มานั่งเขียนเอาคงตายแน่ ผมเลย ลองใช้ for loop มาช่วยแอดแต่ทำไม่สำเร็จอ่ะครับ ยัง งงๆ กะ loop อยู่ พี่ๆ ช่วยดูให้หน่อยคับ

คำตอบ 1 :

$arr = array();
for ($i = 0; $i < 26; $i++)
 $arr[] = chr(65+$i);
for ($i = 0; $i < 26; $i++)
 for ($j = 0; $j < 26; $j++)
   $arr[] = chr(65+$i) . chr(65+$j);

คำตอบของพ้ม :

$arr_results = array();
 
$A_Z = range( 'A','Z' );
 
foreach( $A_Z as $key1=>$value1 ){
	foreach( $A_Z as $key2=>$value2 ){
		$arr_results[] = $value1.$value2;
	}
}
 
$arr_results = array_merge( $A_Z , $arr_results );

ผมเองถ้าเจอความต้องการประเภทเรียงลำดับ 1-10 a-z อะไรเทือกๆนี้ ผมเลือกจะใช้ range() มันเร็วดีครับ ลองต่อยอดฟังก์ชั่นตัวนี้ดูนะครับ ว่ามันใช้งานยังไง ประยุกต์ได้เยอะทีเดียว