Welcome to collectivesolver - Programming & Software Q&A with code examples. A website with trusted programming answers. All programs are tested and work.

Contact: aviboots(AT)netvision.net.il

Buy a domain name - Register cheap domain names from $0.99 - Namecheap

Scalable Hosting That Grows With You

Secure & Reliable Web Hosting, Free Domain, Free SSL, 1-Click WordPress Install, Expert 24/7 Support

Semrush - keyword research tool

Boost your online presence with premium web hosting and servers

Disclosure: My content contains affiliate links.

39,939 questions

51,876 answers

573 users

How to shift letters in a string x times by giving an array of shifts in PHP

1 Answer

0 votes
/*

string = "aaa"
After shifting the first 1 letter by 1 = "baa"
After shifting the first 2 letters by 2 = "dca"
After shifting the first 3 letters by 3 = "gfd"
result = "gfd"

*/

function shifLetters($str, $shifts) {
    $size = count($shifts);
    $arr = str_split($str);
    
    for ($i = $size - 1; $i >= 0; $i--) {
        if ($i + 1 < $size) {
            $shifts[$i] += $shifts[$i + 1];
        }
        
        $shifts[$i] = $shifts[$i] % 26;
        $asciicode = ord($str[$i]) - ord('a');
        $asciicode = $asciicode + $shifts[$i];
        
        if ($asciicode > 25) {
            $asciicode = $asciicode - 26;
        }
        
        $arr[$i] = chr((ord('a') + $asciicode));
    }
    
    return implode($arr);
}

$str = "aaa";
$shifts = array(1, 2, 3);

$str = shifLetters($str, $shifts);

echo $str;



/*
run:

gfd

*/

 



answered Feb 28, 2024 by avibootz
edited Dec 4, 2025 by avibootz

Related questions

...