Aller au contenu

Eliminer les espaces vides d'un array


furious Gontran

Sujets conseillés

Re...

Pour un moteur de recherche, j'elimine les mots non significatifs par un explode et une serie de boucle for:

Lorsqu'un mot non signifiant est trouvé je fais: $Mot[$o]="";

Le soucis est que mon tableau contient ensuite des valeurs vides.

Je n'ais pas trouvé de fonction permettant de supprimer ces valeurs de mon tableau...en existe t'il une ?

Voici le code au cas ou:

$Nonpert=array("le", "la", "les", "de", "des", "et", "l", "a", "que", "qui");

$Mot=explode(" ", $Mots);

  for ($i=0;$i<=10;$i++)

  {

       for ($o=0;$o<sizeof($Mot);$o++)

       {

            if ($Mot[$o]==$Nonpert[$i])

            {

             $Mot[$o]="";

             }

        }

    }

Je rajoute une question ici pour eviter un autre sujet...

Comment faire au sein d'une boucle for pour determiner des variables nommé:

je veux decouper les valeurs de mon tableau en variable unique.

Ces variables idealement nommées $mot1, $mot2, $mot3 dans la limite du

sizeof($Mot).

quelle syntaxe utiliser ?

si je fais $mot.$i par exemple, ca marche ??

($i etant la variable de la boucle for)

Modifié par furious Gontran
Lien vers le commentaire
Partager sur d’autres sites

Il faut que tu repere l'endroit ou tu as un espace vide puis ensuite tu le supprime :

function suppr($tab, $element) {
array_splice ($tab, $element, 1);
return $tab;
}

Pour ta deuxieme question, utilise la fonction eval de php :

eval("\$mot".$i." = 'le contenu de ta variable';");

Eval évalue le contenu de ce que tu lui passe en parametre.

Si tu lui passe :

eval("\$toto=1;");

La variable $toto sera créé et contiendra la valeur 1.

Lien vers le commentaire
Partager sur d’autres sites

Re...

Pour un moteur de recherche, j'elimine les mots non significatifs par un explode et une serie de boucle for:

Lorsqu'un mot non signifiant est trouvé je fais: $Mot[$o]="";

Le soucis est que mon tableau contient ensuite des valeurs vides.

Je n'ais pas trouvé de fonction permettant de supprimer ces valeurs de mon tableau...en existe t'il une ?

Bonjour,

personnellement au lieu de mettre ta case à vide je la détruirai directement avec un unset. Par contre, comme l'index de ton tableau va devenir non linéaire, j'utiliserais plutot foreach pour le parcourir...

Benoit

Lien vers le commentaire
Partager sur d’autres sites

si je fais $mot.$i par exemple, ca marche ??

($i etant la variable de la boucle for)

<{POST_SNAPBACK}>

Ou avec un

${$mot.$1} = "tavaleur";

Ca devrait marcher.

Pour le tableau, je ferai pareil que fuleran à savoir détruire les cases plutot que les mettre vide.

Lien vers le commentaire
Partager sur d’autres sites

Salut Furious Gontran,

Je ne vois pas exactement ce que tu cherches à faire, mais il me semble que tu souhaites éliminer les mots non pertinents de ta liste.

Je ferais comme ceci:

<?php
$Mots="la liste des mots a tester";
$Nonpert=array("le", "la", "les", "de", "des", "et", "l", "a", "que", "qui");
$Mot=explode(" ", $Mots);

foreach($Mot as $motsimple) {
if (array_search($motsimple,$Nonpert) === false)
 $resultats[]=$motsimple;
}

print_r($resultats);
?>

Ce n'est pas plus simple ? ;)

Dan

Lien vers le commentaire
Partager sur d’autres sites

J'aurais fais :

<?php

$Mots="la liste des mots a tester";

$Nonpert=array(" le ", " la ", " les ", " de ", " des ", " et ", " l ", " a ", " que ", " qui ");

$replace="";

$resultats = str_replace($Nonpert,$replace,$Mots);

print_r($resultats);

?>

Ceci dit, attention aux mots vides de sens.

"Gare de L'Est" contient 2 mots importants, alors que

"Il est beau" n'est contient qu'un...

Lien vers le commentaire
Partager sur d’autres sites

  • 2 semaines plus tard...

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...