2014-05-14 19 views
8
$my_alphabet = "T"; 

Ký tự trên "T" phải in vị trí chính xác/số của bảng chữ cái. tức là 20Chuyển đổi chữ cái alphabet sang vị trí bảng chữ cái trong PHP

Vì vậy, nếu

$my_alphabet = "A" ; 
  • tôi sẽ có thể có được vị trí của bảng chữ cái. tức là 1

Làm cách nào để đạt được điều đó.

Tôi thấy số chuyển đổi thành bảng chữ cái .. nhưng ngược lại không có ở bất kỳ đâu.

Cảm ơn, Kimz

Trả lời

19

Bằng việc sử dụng giá trị ascii:

ord(strtoupper($letterOfAlphabet)) - ord('A') + 1 

trong ASCII các chữ cái được sắp xếp theo thứ tự bảng chữ cái, vì vậy ...

+0

Mặc dù các chữ cái ở vị trí 1 mỗi trong ascii một vấn đề phát sinh nếu chữ hoa và ký tự chữ thường có thể được tìm thấy dưới dạng b không phải là thứ tự (A) +1 nhưng thứ tự (a) +1. Trong trường hợp đó, tất cả các chữ cái cần được chuyển thành chữ hoa hoặc chữ thường (strtoupper, strtolower) HOẶC nó phải được kiểm tra với ctype_upper nếu chữ thứ hoa (sau đó là giải pháp từ bwoebi) hoặc nếu chữ thường của nó sau đó thay thế ('a') của ord ('A') đã được sử dụng. – Thomas

+0

@ThomasE. hoặc chỉ sử dụng câu trả lời 'strtoupper()' <. – bwoebi

+0

bwoebi -thanks .. đây là những gì tôi muốn. Xuất sắc. đã tiết kiệm thời gian của tôi. ;) – user3350885

4

Trong trường hợp lá thư bảng chữ cái không phải là trường hợp trên, bạn có thể thêm dòng mã này để đảm bảo bạn nhận được đúng vị trí của chữ cái

$my_alphabet = strtoupper($my_alphabet); 

vì vậy nếu bạn nhận được 'T' hoặc 't', nó sẽ luôn trả về đúng vị trí.

Nếu không @bwoebi 's câu trả lời hoàn hảo sẽ làm công việc

+0

Tôi đã nấu mã bwoebi mà tôi muốn chuẩn bị công thức của mình. cảm ơn cho mã ur quá – user3350885

2

bạn nên cẩn thận về (chữ hoa, chữ thường):

<?php 
$upperArr = range('A', 'Z') ; 
$LowerArr = range('a', 'z') ; 
$myLetter = 't'; 

if(ctype_upper($myLetter)){ 
    echo (array_search($myLetter, $upperArr) + 1); 
}else{ 
    echo (array_search($myLetter, $LowerArr) + 1); 
} 
?> 
Các vấn đề liên quan