IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

recherche incrémentale depuis un tableau


Sujet :

Langage PHP

  1. #1
    Membre actif
    Inscrit en
    Septembre 2004
    Messages
    450
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 450
    Points : 267
    Points
    267
    Par défaut recherche incrémentale depuis un tableau
    Bonjour,

    J'ai un fichier ou j'aimerai cherché des chaines de caractères.

    Les chaines que je voudrai chercher proviennent d'un tableau php pouvant avoir un nombre illimité d'éléments

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $tab=array("a","b","c","d");
    Je voudrai faire une recherche comme ceci:
    Recherche de la chaine "a" et de la chaine "bcd"
    Recherche de la chaine "ab" et de la chaine "cd"
    Recherche de la chaine "abc" et de la chaine "d"

    Avez-vous une idée sur la méthode a employée ?

    Merci beaucoup

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    foreach ($tab as $key=>$value) {
        echo $value;
        echo '<br/>';
        echo implode('', array_splice($tab, $key+1));
    }

  3. #3
    Membre actif
    Inscrit en
    Septembre 2004
    Messages
    450
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 450
    Points : 267
    Points
    267
    Par défaut
    Cela ne marche pas, voici ce que cela donne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    $tab=array("a","b","c","d");
    foreach ($tab as $key=>$value) {
        echo 'val1: '.$value;
        echo '<br/>';
        echo 'val2: '.implode(' ', array_splice($tab, $key+1));
        echo '<br/>';
    }
     
    val1: a
    val2: b c d
    val1: b
    val2: 
    val1: c
    val2: 
    val1: d
    val2:
    Voici ce que je cherche a obtenir:

    val1: a
    val2: b c d
    val1: a b
    val2: c d
    val1: a b c
    val2: d
    val1: a b c d
    val2:

  4. #4
    Membre actif
    Inscrit en
    Septembre 2004
    Messages
    450
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 450
    Points : 267
    Points
    267
    Par défaut
    J'ai finalement réussi, mais je pense qu'il y a plus simple ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    $tab=array("a","b","c","d");
    $tab2=array("a","b","c","d");
     
    echo '<br/><br/><br/>';
    global $val1;
    $val1="";
    foreach ($tab as $key=>$value) {
    	$val1=$val1." ".$value;
        echo 'val1: '.$val1;
        echo '<br/>';
    	unset($tab2[$key]);
    	$val2="";
    	foreach ($tab2 as $key2=>$value2) {
    		$val2.=$value2." ";
    	}
    	echo 'val2: '.$val2;
        echo '<br/>';
    }
     
    val1: a
    val2: b c d 
    val1: a b
    val2: c d 
    val1: a b c
    val2: d 
    val1: a b c d
    val2:

  5. #5
    Membre expert
    Avatar de Dendrite
    Femme Profil pro
    Développeuse informatique
    Inscrit en
    Juin 2008
    Messages
    2 129
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 58
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeuse informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Points : 3 628
    Points
    3 628
    Billets dans le blog
    8
    Par défaut
    Juste une question : ton dernier val2 signifie-t-il que tu cherches une chaine vide ?
    En attendant, voici mon code, qui est tout à fait semblable au tien, mais qui est plus lisible.
    il te sera très facile de modifier si tu veux en dernier couple 'abcde' + ''

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    $liste=array('a','b','c','d','e');
    $search=array();
    for($i=0;$i<(sizeof($liste)-1);$i++){
    	//intégration du premier élément
    	$val1='';
    	for($j=0;$j<=$i;$j++){
    		$val1.=$liste[$j];
    	}
    	$search[$i][0]=$val1;
    	//intégration du second élément	
    	$val2='';
    	for($j=$i+1;$j<sizeof($liste);$j++){
    		$val2.=$liste[$j];
    	}
    	$search[$i][1]=$val2;
    }
    echo '<pre>';
    print_r($search);
    echo '</pre>';

  6. #6
    Membre actif
    Inscrit en
    Septembre 2004
    Messages
    450
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 450
    Points : 267
    Points
    267
    Par défaut
    Citation Envoyé par Dendrite Voir le message
    Juste une question : ton dernier val2 signifie-t-il que tu cherches une chaine vide ?
    En fait c'est juste pour l'initialiser

  7. #7
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    J'avais mis array_splice au lieu de array_slice :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?php
    $tab=array("a","b","c","d");
    $c = count($tab);
    for ($i = 1; $i < $c; ++$i) {
        echo 'val1: '.implode('', array_slice($tab, 0, $i));
        echo '<br/>';
        echo 'val2: '.implode('', array_slice($tab, $i));
        echo '<br/>';
    }

  8. #8
    Membre actif
    Inscrit en
    Septembre 2004
    Messages
    450
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 450
    Points : 267
    Points
    267
    Par défaut
    Cela fonctionne, merci beaucoup

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Recherche élément médian dans tableau non trié
    Par chicorico dans le forum Algorithmes et structures de données
    Réponses: 7
    Dernier message: 27/05/2009, 17h39
  2. Réponses: 8
    Dernier message: 03/02/2009, 13h24
  3. Réponses: 23
    Dernier message: 10/01/2006, 13h33
  4. [MySQL] Update depuis un tableau
    Par psychoBob dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 07/01/2006, 14h53
  5. Réponses: 6
    Dernier message: 05/01/2006, 14h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo