Lấy từ the documentation, PHP theo quy ước của Perl khi xử lý các phép tính số học trên các biến ký tự:
Ví dụ: bằng PHP và Perl $ a = 'Z'; $ a ++; biến $ a thành 'AA', trong khi trong C a = 'Z'; a ++; biến thành '[' (giá trị ASCII của 'Z' là 90, giá trị ASCII của '[' là 91). Lưu ý rằng các biến ký tự có thể được tăng lên nhưng không bị giảm đi và thậm chí chỉ có các ký tự ASCII thuần túy (a-z và A-Z) được hỗ trợ. Tăng/giảm các biến ký tự khác không có hiệu lực, chuỗi gốc không thay đổi.
Trong khi cá nhân tôi không sử dụng tính năng này, tôi có thể nghĩ ra một vài lợi ích bằng cách tuân theo quy ước của Perl, trái ngược với C. Đó là gia tăng trong phạm vi alpha thay vì đơn giản tăng giá trị ASCII.
Bằng cách ở trong phạm vi alpha, về cơ bản chúng ta đang nói về một cơ sở 26 numeral system (sử dụng chữ cái). Vì vậy, chỉ cần tăng 9
thành 10
(chuyển tiếp), z
gia số thành aa
.
Điều gì đến với tâm trí ngay lập tức sẽ là chuỗi ký tự băm.
public static function nextSeed() {
// $seed = abc
return strtolower(++self::$seed);
// $seed = abd
}
Trong khi khả năng hạt như vậy sẽ được quản lý bên ngoài của PHP, đó là dù sao có lợi PHP cung cấp natively gì nếu không sẽ yêu cầu mã hơn.
trường hợp sử dụng khác:
- Base-26 Numeral Hệ thống Đại diện
- Tính Khác biệt kí tự
- Encryption
Nguồn
2013-06-28 15:15:11
Đó là một mánh lới quảng cáo, không phải là một tính năng. SO không thể trả lời "lý do" đằng sau thiết kế ngôn ngữ, ngoại trừ việc nó có [được chuyển từ Perl] (http://stackoverflow.com/questions/6458068/increment-and-decrement-strings-in-perl) – mario
chỉ có thời gian tôi có thể nghĩ rằng nó là hữu ích sẽ là nếu một loạt các chuỗi đã được thử nghiệm như điều kiện. Thay vì viết một bài kiểm tra cho mỗi một, một vòng lặp for sẽ được sử dụng để kiểm tra từng cái một. – asimes
ID cột MS Excel tăng từ 'A' đến 'Z', 'AA' thông qua 'AZ', 'BA' đến 'BZ', v.v ... khớp với mẫu tăng dần ký tự này; để tăng nhân vật là cực kỳ hữu ích khi làm việc với các trang tính Excel –