structure de controle avec array

Répondre
vazajo
le 07/04/2008 à 14:03
vazajo
mon problème :
j'ai deux tableaux exemple :
$mesobjet = array ("canne", "fraise", "bannane");
$monsac = array ("sucre", "stylo", "canne");


je veux vérifié si dans $monsac j'ai une valeur égal au contenu de $mesobjet si oui action1 sinon action2
j'ai fait ca (voir dessous) mais il y a surement plus cour et je n'arrive pas à aborder le problème des array simplement:

<?php
$mesobjet = array ("canne", "fraise", "bannane");
$monsac = array ("sucre", "stylo", "canne");

if($monsac[0] == $mesobjet[0] &&
$monsac[0] == $mesobjet[1] &&
$monsac[0] == $mesobjet[2] &&
$monsac[1] == $mesobjet[0] &&
$monsac[1] == $mesobjet[1] &&
$monsac[1] == $mesobjet[2] &&
$monsac[2] == $mesobjet[0] &&
$monsac[2] == $mesobjet[1] &&
$monsac[2] == $mesobjet[2])
{
echo 'action1';
}
else{
echo 'action2';
//se qui affiche action2 puisque "canne" est dans les deux array
}
?>


J'ai bien essayé ceci (ATTENTION CODE FAUX):
<?php
$mesobjet = array ("canne", "fraise", "bannane");
$monsac = array ("sucre", "stylo", "canne");

if($monsac[*] == $mesobjet[*])
{
echo 'action1';
}
else{
echo 'action2';

}
?>

Je suis sur qu'il y a une solution, mais je ne suis qu'un débutant...

PS : pour mon vrais problème j'ai des tableaux de plus de 20 valeurs 20²= smiley
vazajo
le 07/04/2008 à 14:24
vazajo
je viens de voir que mon action1 devrais être la bonne réponse?
vazajo
le 07/04/2008 à 14:27
vazajo
correction de mon code :

<?php
$mesobjet = array ("canne", "fraise", "bannane");
$monsac = array ("sucre", "stylo", "canne");

if($monsac[0] == $mesobjet[1] or
$monsac[0] == $mesobjet[2] or
$monsac[1] == $mesobjet[0] or
$monsac[1] == $mesobjet[1] or
$monsac[1] == $mesobjet[2] or
$monsac[2] == $mesobjet[0] or
$monsac[2] == $mesobjet[1] or
$monsac[2] == $mesobjet[2])
{
echo 'action1';
}
else{
echo 'action2';
//se qui affiche action1 puisque "canne" est dans les deux array
}
?>


bon j'ai déjà un peu avancé ^^
vazajo
le 07/04/2008 à 17:03
vazajo
la solution est d'utiliser

$result = array_diff ($mesobjet, $monsac);


Oui? mais je n'arrive pas à exploiter $result ...

<?php

$mesobjet = array ("canne", "fraise", "bannane");
$monsac = array ("sucre", "stylo", "canne");
$result = array_diff ($mesobjet, $monsac);

print_r($result); // affiche Array ( [1] => fraise [2] => bannane )

?>
vazajo
le 07/04/2008 à 17:43
vazajo
j'ai réussi à réduire mon code :

<?php
$mesobjet = array ("canne", "fraise", "bannane");
$monsac = array ("sucre", "stylo", "canne");
if (in_array($mesobjet[0], $monsac) or
in_array($mesobjet[1], $monsac) or
in_array($mesobjet[2], $monsac)){
echo 'action1';
}
else {
echo 'action2';
}
// affiche action 1 canne est dans les deux tableaux
?>


Personne n'a une idée pour faire plus simple?
LA GLOBULE
le 07/04/2008 à 21:24
LA GLOBULE
Si :

<?php
$mesobjet = array ("canne", "fraise", "bannane");
$monsac = array ("sucre", "fraise", "canne");

if (count(array_intersect($mesobjet, $monsac))>0) {
echo 'objet trouve dans mon sac';
}
else {
echo 'objet pas trouve';
}
?>


:)
vazajo
le 08/04/2008 à 06:43
vazajo
ah merci bien je vais essayer de comprendre avant de copié coller ^^

le count et >0 que je ne comprend pas.
LA GLOBULE
le 08/04/2008 à 09:50
LA GLOBULE
Ben si la différence entre les tableaux est positive, c'est qu'ils ont des éléments en commun.
LupusMic
le 08/04/2008 à 10:31
LupusMic
(vazajo) Tu devrais lire les cours qui parle des structures de contrôle, et de la syntaxe générale de PHP.
Développeur récurrent, procédural et relationnel. Caustique soupe-au-lait.
Répondre

Ecrire un message

Votre message vient d'être créé avec succès.
LoadingChargement en cours