Aller au contenu

Eliminer les espaces vides d'un array


Sujets conseillés

Posté (modifié)

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
Posté

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.

Posté
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

Posté
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.

Posté

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

Posté
Ben vi, mais tu comment c'est: plus c'est simple...

Tu aurais la même avec le décodeur ? :lol:
Posté

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...

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

Je n'avais jamais vu ce genre de syntaxe.

Cela fonctionne ?

(j'ai essayé mais sans résultat)

  • 2 semaines plus tard...

Veuillez vous connecter pour commenter

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



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