Source Code of: interleaveStrings.php
Date Last Modified: May 02, 2009 - 01:59:23 AM
Size: 1 KB  |  70 lines  |  1,826 characters
<?php

/**
 * Interleave two strings of arbitrary length.
 *
 * Take character 1 from $a, char 2 from $b,
 * char 3 from $a, char 4 from $b, etc. 
 * Interleaving ends after end of shorter 
 * string is reached.
 *
 * @param string $a first string
 * @param string $b second string
 * @return string the interleaved string
 */
function interleaveStrings($a$b
{
    
$alen strlen($a);
    
$blen strlen($b);
    
$maxlen max($alen$blen);
    
    
// turn strings into arrays of chars
    
$a preg_split('//'$a, -1PREG_SPLIT_NO_EMPTY);
    
$b preg_split('//'$b, -1PREG_SPLIT_NO_EMPTY);
    
    
$sResult '';
    
    for (
$i=0$i<$maxlen$i++) {

        if (
$i $alen) {
            
$sResult .= $a[$i];
        }

        if (
$i $blen) {
            
$sResult .= $b[$i];
        }
    } 
// end for
    
    
return $sResult;
// end func


/**
 * Interleave an arbitrary number of strings.
 *
 *
 * @param array $a_strings strings to interleave (min of 1)
 * @return string|false the interleaved string or false if 
 *      invalid argument
 * @see interleaveStrings($a, $b)
 */
function interleaveStringsArray($a_strings
{
    if (
count($a_strings) <= 0) return false;
    if (
count($a_strings) <= 1) return $a_strings[0];
    
    
$sResult interleaveStrings($a_strings[0], $a_strings[1]);
    for (
$i=2$i<count($a_strings); $i++) {
        
$sResult interleaveStrings($sResult$a_strings[$i]);
    }
    
    return 
$sResult;
}



echo 
'<pre>'print_rinterleaveStringsArray( array('FOO''evolt''1234') ) , 1) .'</pre><br />';
echo 
'<pre>'print_rinterleaveStringsArray( array('happy''thanksgiving') ) , 1) .'</pre><br />';
echo 
'<pre>'print_rinterleaveStringsArray( array('how''many''licks''to''the''center''of''a''tootsie''pop') ) , 1) .'</pre><br />';

?>

A Derivative Work of: PHP Source Code Utility - Version 1.0.0 Copyright © 0php.com 2002.