Jump to content

rearrange string


severndigital

Recommended Posts

let's say I have a string like

 

'abdc'

 

I would like to return every possible arrangement of that string. Like boxing a lottery number.

 

so the result would be something like

 

array('abcd',

'acdb',

'acbd',

'adbc',

'adcb',

and so on

)

 

Is there an easy way to do this, or will have just have use like a ton of loops to make it work? it doesn't not have to be in any special order. i just needs to return all possible configurations of the string.

 

Thanks in advance.

 

P

 

Link to comment
Share on other sites

Its called permutations. I got this from the net, cant remember where. I  used it to make a lotto blaster and it works great.

<?php
$str = '1234';

function permutations($letters,$num){
    $last = str_repeat($letters{0},$num);
    $result = array();
    while($last != str_repeat(lastchar($letters),$num)){
        $result[] = $last;
        $last = char_add($letters,$last,$num-1);
    }
    $result[] = $last;
    return $result;
}
function char_add($digits,$string,$char){
    if($string{$char} <> lastchar($digits)){
        $string{$char} = $digits{strpos($digits,$string{$char})+1};
        return $string;
    }else{
        $string = changeall($string,$digits{0},$char);
        return char_add($digits,$string,$char-1);
    }
}
function lastchar($string){
    return $string{strlen($string)-1};
}
function changeall($string,$char,$start = 0,$end = 0){
    if($end == 0) $end = strlen($string)-1;
    for($i=$start;$i<=$end;$i++){
        $string{$i} = $char;
    }
    return $string;
}
?>

 

To use this Generator you can do something like this :

 

<?
$Array=permutations("$str",3);
for($i=0 ; $i < count($Array) ; $i++) {
        echo "<br>$Array[$i]";
//echo "<br>$i::$Array[$i]";
}
echo "<br>There were $i permutations found!";
?>

 

 

HTH

Teamatomic

Link to comment
Share on other sites

This thread is more than a year old. Please don't revive it unless you have something important to add.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.