PHP kullanarak alfabenin bir sonraki mektubu almak için en etkili yolu

7 Cevap php

A dan z ye her karakteri göz önüne alındığında, PHP kullanarak alfabesiyle sonraki mektubu almak için en etkili yolu nedir?

7 Cevap

my Bence bunu yapmanın en etkili yolu just increment dize değişkeni etmektir.

$str = 'a';
echo ++$str; // prints 'b'

$str = 'z';
echo ++$str; // prints 'aa' 

Bunu istiyorum ama onun yerine almak sıfırlamak istemiyorsanız 'z' bir 'a' sadece çıkan dize uzunluğunu kontrol edebilirsiniz 'aa' vermek artırılmıyor görüldüğü gibi ve onun >1 sıfırlamak eğer.

$ch = 'a';
$next_ch = ++$ch; 
if (strlen($next_ch) > 1) { // if you go beyond z or Z reset to a or A
 $next_ch = $next_ch[0];
}

Bu size Z vurduğunuzda ne yapmak istediğinize bağlıdır, ancak birkaç seçeneğiniz var:

$nextChar = chr(ord($currChar) + 1); // "a" -> "b", "z" -> "{"

Ayrıca PHP'nin range() fonksiyonu faydalanmak olabilir:

$chars = range('a', 'z');  // ['a', 'b', 'c', 'd', ...]

Peki, bu "kenar durumlarda" ile ne yapmak istediğinizi tam olarak ne bağlıdır. Ne Sonuç karakter olduğunda bekliyorsunuz z veya Z? Eğer same case bir sonraki harfi, ya da sadece bir sonraki harfi, nokta istiyorsun?

Bunun cevabını bilmeden, çok temel durumda, sadece bunu yapabilirsiniz:

$next_character = chr(ord($current_character) + 1);

Ama olduğunuzda ASCII değerlerine göre, Z Bu size [ verecek, ve z sana { verecektir.


Edited as per comment:

Eğer aynı davanın bir sonraki karakteri gerekiyorsa, muhtemelen yukarıdaki satırdan sonra basit kontrolleri ekleyebilirsiniz:

if ($next_character == '[')
    $next_character = 'A';
else if ($next_character == '{')
    $next_character = 'a';

Bunlar çok basit işlemler, ben gerçekten böyle bir durumda verimlilik dert olmaz.

Nasıl kullanma hakkında ord() and chr()?

<?php
    $next = chr(ord($prev)+1);
?>

: Ben sadece bu durumda küçük harf karakterler umurumda yana, ben burada yayınlanan cevaplara dayanan aşağıdaki kodu kullanabilirsiniz edeceğiz

function nextLetter(&$str) {
 $str = ('z' === $str ? 'a' : ++$str);
}

Yardım için teşekkürler çocuklar!

$val = 'z';
echo chr((((ord($val) - 97) + 1) % 26) + 97);

Güzel ve kolay :-)

Tüm harfleri bir dizi oluşturmak, mevcut mektubu aramak ve bir sonraki harfi döndürür. Eğer son harfi ulaşırsanız ilk harfi döndürür.