Page 1 sur 2
Recuperer variable tableau array
Posté : 01 avr. 2010, 21:05
par fred65
Bonjour à tous,
voila, je voudrais arriver à récupérer une variable "concordante" dans un tableau array. Etant debutant, je m'explique mal alors voici un exemple :
$produit = array("pain", "lait", "chocolat");
$recherche = "pain cacahuète";
$motcle = explode(" ", $recherche);
if (in_array($motcle[0], $produit))
{
echo 'Nous avons ce produit :' . $motcle;
}
elseif (in_array($motcle[1], $produit))
{
echo 'nous avons ce produit :' . $motcle;
}
Donc, je que je voudrais, si c'est faisable, c'est récupérer la variable qui est "concordante" ( pain, dans cet exemple ), pour pouvoir l'utiliser.
Merci
Re: Recuperer variable tableau array
Posté : 01 avr. 2010, 21:29
par Dr@ke
Re: Recuperer variable tableau array
Posté : 01 avr. 2010, 21:30
par stealth35
array_search ?
Re: Recuperer variable tableau array
Posté : 01 avr. 2010, 22:01
par fred65
Merci beaucoup, je regarde ça tout de suite !
Re: Recuperer variable tableau array
Posté : 01 avr. 2010, 23:26
par dunbar
Salut,
Quelque chose dans le genre
En partant de ton exemple
<?php
$produit = array( 'pain', 'lait', 'chocolat');
$recherche = 'pain lait';
$motcle = explode(" ", $recherche);
$n = count($motcle);
for ($i=0; $i<$n; $i++) {
$Resultat[$i] = array_search($motcle[$i], $produit);
$af[$i] = (isset($Resultat[$i]) && ($Resultat[$i] == true)) ? 'Nous avons ce produit : '.$motcle[$i] : 'Pas de produit : '.$motcle[$i];
echo '<li>' .$af[$i] .'</li>';
}
?>
Re: Recuperer variable tableau array
Posté : 01 avr. 2010, 23:30
par stealth35
pourquoi tu fais pas un foreach sur le tableau ca serais plus simple

(et un coup d'array_unique en bonus)
$produit = array(1 => 'pain',
2 => 'lait',
3 => 'chocolat');
$recherche = 'pain lait cacahuète chocolat lait';
$motcle = array_unique(explode(" ", $recherche));
foreach($motcle as $mot)
{
if(array_search($mot, $produit))
{
echo sprintf('Nous avons ce produit : %s <br />', $mot);
}
else
{
echo sprintf('Pas de produit : %s <br />', $mot);
}
}
Re: Recuperer variable tableau array
Posté : 01 avr. 2010, 23:47
par Dr@ke
Erreur de ma part:
array_diff_key() n'est pas intéressant ici.
$produit = array(1 => 'pain',
2 => 'lait',
3 => 'chocolat');
$recherche = 'pain lait cacahuète chocolat lait';
$recherche = explode(" ", $recherche);
$result = array_intersect($produit, $recherche);
// Les produits disponibles
print_r($result);
Re: Recuperer variable tableau array
Posté : 01 avr. 2010, 23:50
par stealth35
par contre le coup du array_intersect c'est bien ca, si il veux juste les valeurs qui correspondent c'est qu'il faut utiliser
Re: Recuperer variable tableau array
Posté : 01 avr. 2010, 23:59
par Dr@ke
$produit = array('pain', 'lait', 'chocolat');
$recherche = 'pain lait cacahuète chocolat lait';
$recherche = array_unique(explode(" ", $recherche));
$result = array_intersect($produit, $recherche);
// Les produits disponibles
print_r($result);
Mais bon, il doit y avoir des tonnes de solutions, et oui
array-search() pour chercher juste une valeur

Re: Recuperer variable tableau array
Posté : 02 avr. 2010, 00:33
par fred65
Les gars vous êtes balèzes ! Je vois qu'il me reste du chemin à faire.
Vous m'avez donné de quoi me faire la main...
Je retient surtout la solution de stealth35 avec le "foreach" et "array_search"(sans faire de jaloux) qui me semble etre exactement ce qu'il me fallait.
Une chose, par contre, est il possible de faire en sorte que la fonction ne tienne pas compte de la casse ? ex: pain=Pain
Re: Recuperer variable tableau array
Posté : 02 avr. 2010, 00:42
par stealth35
il en prend pas compte a la base
Re: Recuperer variable tableau array
Posté : 02 avr. 2010, 00:46
par Dr@ke
Regarde les commentaires dans la page du manuel de la fonction
array_search()
http://fr.php.net/manual/fr/function.ar ... .php#96533
(Les commentaires sont souvent tout autant intéressants)
Re: Recuperer variable tableau array
Posté : 02 avr. 2010, 03:57
par blof
Bonjour,
Mais bon, il doit y avoir des tonnes de solutions ...
sans tenir compte de la casse
<pre>
<?php
$produit = array("pain", "lait", "Chocolat");
$recherche = "Pain cacahuète chocolat";
$motif = preg_replace('/ +/', '|', $recherche);
$disponible = preg_grep("/$motif/i", $produit);
print_r($disponible);
?>
</pre>
Re: Recuperer variable tableau array
Posté : 02 avr. 2010, 06:21
par Dr@ke
Oui il y a des tonnes de façons
$produit = array('pain', 'lait', 'chocolat');
$recherche = 'Pain lait cacahuète chocolat lait';
$recherche = array_unique(explode(' ', $recherche));
$recherche = array_intersect($produit, array_map('strtolower', $recherche));
// Les produits disponibles
print_r($recherche);
<?php
$produit = array('pain', 'lait', 'chocolat');
$recherche = 'Pain lait cacahuète chocolat lait';
$recherche = array_unique(explode(' ', $recherche));
foreach($recherche as $mot)
{
if(in_array(strtolower($mot), $produit))
{
echo sprintf('Nous avons ce produit : %s <br />', $mot);
}
else
{
echo sprintf('Pas de produit : %s <br />', $mot);
}
}
?>
Re: Recuperer variable tableau array
Posté : 02 avr. 2010, 08:53
par fred65
Enfin un vrai forum d'entraide !
Je ne sais comment vous remercier tous. Mon probleme est résolu et je vous le doit.
Merci encore; I'll be back... =D>