คำตอบที่ได้รับเลือกจากเจ้าของกระทู้
ความคิดเห็นที่ 2
เขียน PHP มาสิบกว่าปี เพิ่งรู้เหมือนกันครับ
จากเอกสาร
http://php.net/language.operators.increment
จะเห็นว่าการใช้ ++ กับสตริงจะมีลักษณะพิเศษ คือ เมื่อเพิ่ม a ไปจนถึง z แล้ว
ตัวต่อไปก็คือ aa, ab, ac, ..., az, ba, bb, ... ไปเรื่อยๆ (เหมือนกับคอลัมน์ใน
สเปรดชีต)
นั่นคือเมื่อโปรแกรมล่างรัน a, b, c, ... ไปจนถึง z แล้ว เนื่องจาก z = z ดังนั้น
จึงไปเพิ่มค่าอีก กลายเป็น aa ซึ่งก็ยังน้อยกว่า z (เมื่อเปรียบเทียบแบบข้อความ)
ดังนั้นโปรแกรมจึงรันไปเรื่อยๆ จนถึง yx, yy, yz ซึ่งเมื่อตัวต่อไปคือ za ซึ่งมากกว่า
z แล้ว โปรแกรมจึงหยุดลงตรงนี้
ในเอกสารข้างต้นยังให้เหตุผลว่าที่เป็นแบบนี้ก็เพราะทำงานเหมือนกับภาษา Perl
ซึ่งก่อนหน้าจะมี PHP ก็เป็นภาษาที่นิยมใช้เขียนเว็บกันมากภาษาหนึ่ง
จากเอกสาร
http://php.net/language.operators.increment
จะเห็นว่าการใช้ ++ กับสตริงจะมีลักษณะพิเศษ คือ เมื่อเพิ่ม a ไปจนถึง z แล้ว
ตัวต่อไปก็คือ aa, ab, ac, ..., az, ba, bb, ... ไปเรื่อยๆ (เหมือนกับคอลัมน์ใน
สเปรดชีต)
นั่นคือเมื่อโปรแกรมล่างรัน a, b, c, ... ไปจนถึง z แล้ว เนื่องจาก z = z ดังนั้น
จึงไปเพิ่มค่าอีก กลายเป็น aa ซึ่งก็ยังน้อยกว่า z (เมื่อเปรียบเทียบแบบข้อความ)
ดังนั้นโปรแกรมจึงรันไปเรื่อยๆ จนถึง yx, yy, yz ซึ่งเมื่อตัวต่อไปคือ za ซึ่งมากกว่า
z แล้ว โปรแกรมจึงหยุดลงตรงนี้
ในเอกสารข้างต้นยังให้เหตุผลว่าที่เป็นแบบนี้ก็เพราะทำงานเหมือนกับภาษา Perl
ซึ่งก่อนหน้าจะมี PHP ก็เป็นภาษาที่นิยมใช้เขียนเว็บกันมากภาษาหนึ่ง
แสดงความคิดเห็น
ถามโค้ดBasic PHP หน่อยจ้า
<html>
<body>
<?
echo "\n<ol>";
for($i='a';$i<"z";$i++){
echo "<li> item number $i </li>";
}
echo "</ol>";
?>
</body>
</html>
จะได้ตามรูปนี้
http://upic.me/t/y0/56untitled.png
แต่ถ้าเพิ่มตัว = ที่ขีดเส้นใต้
<html>
<body>
<?
echo "\n<ol>";
for($i='a';$i<="z";$i++){
echo "<li> item number $i </li>";
}
echo "</ol>";
?>
</body>
</html>
ทำไมเป็นแบบนี้ครับ
http://upic.me/t/7v/6untitled2.png