Permutation de valeur dans un tableau [Résolu]

jeromexavier 4 Messages postés lundi 12 septembre 2005Date d'inscription 16 mai 2007 Dernière intervention - 16 mai 2007 à 11:20 - Dernière réponse : J_G 1406 Messages postés mercredi 17 août 2005Date d'inscription 28 août 2007 Dernière intervention
- 16 mai 2007 à 13:11
Bonjour tout le monde !
urgent, ca fait une heure que j'essais de trouver en vain le nom de la fonction PHP qui permet de changer de place la position des valeurs d'un tableau ou alors, la position de la clé !!
quelqu'un pourrait m'aider?

exemple: array()
avant.
    [0] => pomme
    [1] => framboise
    [2] => orange
    [3] => banane
après.
    [0] => banane
    [1] => pomme
    [2] => framboise
    [3] => orange
encore après.
    [0] => orange
    [1] => banane
    [2] => pomme
    [3] => framboise

ou alors on permute les cles:

avant.
    [0] => pomme
    [1] => framboise
    [2] => orange
    [3] => banane
après.
    [3] => pomme
    [0] => framboise
    [1] => orange
    [2] => banane
encore après.
    [2] => pomme
    [3] => framboise
    [0] => orange
    [1] => banane

etc.

MERCI BCP les GARS !
Afficher la suite 

Votre réponse

5 réponses

Meilleure réponse
J_G 1406 Messages postés mercredi 17 août 2005Date d'inscription 28 août 2007 Dernière intervention - 16 mai 2007 à 11:52
3
Merci
Et ben pourtant... As-tu essayé :

$array = array();
print_r($array);
for ( $i = 0 ; $i<count($array); $i++ ) {
    array_unshift($array,array_pop($array));
    print_r($array);
}

Note : une heure c'est pas long

Merci J_G 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 74 internautes ce mois-ci

Commenter la réponse de J_G
Meilleure réponse
neigedhiver 2492 Messages postés jeudi 30 novembre 2006Date d'inscription 14 janvier 2011 Dernière intervention - 16 mai 2007 à 12:28
3
Merci
Salut,

En prenant la solution de J_G, on peut faire ue fonction qui fait ça d'un seul coup :

function array_rotate(&$arr, $reverse=FALSE)
{
if ($reverse == TRUE)
{
return array_push($arr, array_shift($arr));
}
else
{
return array_unshift($arr, array_pop($arr));
}
}

Par défaut, la fonction déplace les éléments vers la fin, en plaçant le dernier au début. Si on passe l'argument $reverse avec la valeur TRUE, ça fait tourner dans l'autre sens.

Merci neigedhiver 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 74 internautes ce mois-ci

Commenter la réponse de neigedhiver
jeromexavier 4 Messages postés lundi 12 septembre 2005Date d'inscription 16 mai 2007 Dernière intervention - 16 mai 2007 à 12:00
0
Merci
heu???
je vais donc essayé cela...
merci a tout a l'heure
Commenter la réponse de jeromexavier
jeromexavier 4 Messages postés lundi 12 septembre 2005Date d'inscription 16 mai 2007 Dernière intervention - 16 mai 2007 à 12:56
0
Merci
Merci les gars !


mais j'aurais trop préféré que vous me disiez, ce matin, (si j'avais posté mon msg) qu'une telle fonction n'existait pas en PHP...


snif... voila j'ai passé toute la matinée sur ça... je vais dire quoi à la MOA maintenant ? sic! :-(

en tous cas vos deux exemples sont bon, je vais m'en servir pour développer une fonction proche du décalage de bits en c ou assembleur.

MERCI BCP!
Commenter la réponse de jeromexavier
J_G 1406 Messages postés mercredi 17 août 2005Date d'inscription 28 août 2007 Dernière intervention - 16 mai 2007 à 13:11
0
Merci
Excellente idée neigedhiver !!!

Allons plus loin alors :

function array_rotate ( &$arr, $steps = 1 ) {
    $steps = (int)$steps; // Garanti un int
    $reverse = ($steps < 0); // Dans quel sens ?
    $steps = abs($steps); // $steps devient un compteur

    while ( $steps-- ) { // Pour chaque pas, effectuer l'opération
       if ( $reverse ) array_push ( $arr, array_shift ( $arr ) )
       else array_unshift ( $arr, array_pop ( $arr ) );
    }

    return count($arr);
}
Commenter la réponse de J_G

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.