J'aimerais combiner deux test pour avoir un résultat global sous forme True/False

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : J'aimerais combiner deux test pour avoir un résultat global sous forme True/False

Re: J'aimerais combiner deux test pour avoir un résultat global sous forme True/False

par Naroth » 29 nov. 2016, 12:41

Merci Spols de m'avoir corrigé
j'ai écris la chose un peu tard je dois bien l'avouer.

Le problème de mon code est qu'il renvoie false dans tous les cas.
Je suppose que c'est pour cela que tu dis qu'il ne marche pas ?

Re: J'aimerais combiner deux test pour avoir un résultat global sous forme True/False

par Spols » 29 nov. 2016, 10:19

Dans le code de Naroth, $match2 n'est pas initié, mais ca devrait pas poser de soucis
$globalMatch sera un booléen c'est sur.

Quand tu dis que cela ne fonctionne pas, y a t il des messages d'erreur ? si oui, donne les nous sinon explique nous ce qui ne fonctionne pas.

Code de Naroth corrigé
si la boucle trouve un résultat positif, pas besoin de la continuer
$match_products = array(9,10,11);

//Test 1
$cartClass = hikashop_get('class.cart');
$cart = $cartClass->loadFullCart();
$match1 = false;

foreach($cart->products as $product){
  if(in_array($product->product_id, $match_products))
   {
      $match1 = true;
     break;
   }
$match1 = false;
}

//Test 2
$match_product1 = array(3,4,5,6,7,12);

$cartClass = hikashop_get('class.cart');
$cart = $cartClass->loadFullCart();
$match2 = false;
foreach($cart->products as $product){
  if(in_array($product->product_id, $match_product1))
   {
      $match2 = true;
     break;
   }
$match2 = false;
}

//Si match1 ou match2 vaut false, globalMatch vaut false. 
//Si les deux valent false globalMatch vaut false.
//Si les deux valent true, globalMatch vaut true.
$globalMatch = $match1 && $match2;

return $globalMatch

Re: J'aimerais combiner deux test pour avoir un résultat global sous forme True/False

par steph3838 » 29 nov. 2016, 01:33

Merci Naroth,

Mais cela ne fonctionne pas... du moins pas là où je l'utilise...
est ce que la variable $globalMatch est de type booléenne (true/false) ou string ?

si ce n'est pas un résultat de type true/false que je délivre cela ne fonctionne pas...

D'avance merci pour votre aide,
Cordialement,
Steph

Re: J'aimerais combiner deux test pour avoir un résultat global sous forme True/False

par Naroth » 29 nov. 2016, 01:20

Bonsoir,

Code : Tout sélectionner

$match_products = array(9,10,11); //Test 1 $cartClass = hikashop_get('class.cart'); $cart = $cartClass->loadFullCart(); $match1 = false; foreach($cart->products as $product){ if(in_array($product->product_id, $match_products)) { $match1 = true; } $match1 = false; } //Test 2 $match_product1 = array(3,4,5,6,7,12); $cartClass = hikashop_get('class.cart'); $cart = $cartClass->loadFullCart(); foreach($cart->products as $product){ if(in_array($product->product_id, $match_product1)) { $match2 = true; } $match2 = false; } //Si match1 ou match2 vaut false, globalMatch vaut false. //Si les deux valent false globalMatch vaut false. //Si les deux valent true, globalMatch vaut true. $globalMatch = $match1 && $match2; return $globalMatch
Voici une solution possible

Re: J'aimerais combiner deux test pour avoir un résultat global sous forme True/False

par steph3838 » 28 nov. 2016, 23:04

j'ai essayé ceci :

Code : Tout sélectionner

$match_product2 = array(3,4,5,6,7,12); $match_product1 = array(9,10,11) $result = false; $cartClass = hikashop_get('class.cart'); $cart = $cartClass->loadFullCart(); foreach($cart->products as $product) { if (in_array($product->product_id, $match_product1)) { foreach($cart->products as $product) { if (in_array($product->product_id, $match_product2)) { $result = true; break 2; } } } } echo $result;
mais j'ai toujours des erreurs...

je ne sais pas ce qui ne vas pas dans mon code...
je suppose que c'est ma variable $result... en fait il me faut un état true/false comme résultat et je ne suis pas sur que ma variable soit le bon choix... je ne vois pas comment faire... je cherche...

D'avance merci pour votre aide,
Cordialement,
Steph

Re: J'aimerais combiner deux test pour avoir un résultat global sous forme True/False

par steph3838 » 28 nov. 2016, 20:52

Est-ce que ce code ne répondrait pas à mon attente ?

Code : Tout sélectionner

$match_product2 = array(3,4,5,6,7,12); $match_product1 = array(9,10,11) $cartClass = hikashop_get('class.cart'); $cart = $cartClass->loadFullCart(); foreach($cart->products as $product){ if (in_array($product->product_id, $match_product2)) { if (in_array($product->product_id, $match_product1)) } return false; }
D'avance merci pour votre aide,
Cordialement,
Steph

J'aimerais combiner deux test pour avoir un résultat global sous forme True/False

par steph3838 » 28 nov. 2016, 19:36

Bonjour,

Je travaille sur un test dans le panier de Hikashop dont selon le contenu je réécris les liens d'un menu de Joomla! avec ReReplacer de RegularLabs, bref.

Les deux tests suivants fonctionnent très bien ainsi :
test 1

Code : Tout sélectionner

$match_products = array(9,10,11); $cartClass = hikashop_get('class.cart'); $cart = $cartClass->loadFullCart(); foreach($cart->products as $product){ if(in_array($product->product_id, $match_products)) { return true; } return false; }
Test 2

Code : Tout sélectionner

$match_product1 = array(3,4,5,6,7,12); $cartClass = hikashop_get('class.cart'); $cart = $cartClass->loadFullCart(); foreach($cart->products as $product){ if(in_array($product->product_id, $match_product1)) { return true; } return false; }
je veux les combiner avec les règle suivante :
Test 1 = true ET test 2 = true <=> résultat global = true sinon résultat global = flase

j'ai écris ce code mais ne suis pas du tout sur de ma syntaxe (PHP n'est vraiement pas mon fort... :( )

Code : Tout sélectionner

$match_products = array(9,10,11); $cartClass = hikashop_get('class.cart'); $cart = $cartClass->loadFullCart(); foreach($cart->products as $product){ if(in_array($product->product_id, $match_products)) return $result = false; } return $result = true; } //test2 $match_product1 = array(3,4,5,6,7,12); $cartClass = hikashop_get('class.cart'); $cart = $cartClass->loadFullCart(); foreach($cart->products as $product){ if(in_array($product->product_id, $match_product1)) return $result1 = false; } return $result1 = true; } //test1 AND 2 if ($result = true && $result1 = true); { return true; } else { return false; }
dans ce code je veux stocker le résultat des test 1 et deux dans deux variables pour ensuite appliquer ma règle et obtenir un résultat global à true ou false.

D'avance merci pour votre aide et vos éclairages
Cordialement,
Steph