10
votes

Comment combiner deux déclarations conditionnelles dans PHP

D'accord, je sais que ceci est une question de Newb, mais comment irai-je seulement exécuter si 2 si si 1 (Texte: Test apparaît dans la chaîne de données.) J'ai essayé de combiner les deux mais finir avec toutes sortes de problèmes . Donc, si le test ne montre pas les boucles ignorées, si elle le fait alors, le code de regex que j'ai dans si 2 sera couru.

$data = 'hello world "this is a test" last test';


// IF 1 
if (stripos($data, 'test') !== false) {
}


// IF 2
if (preg_match('/"[^"]*"/i', $data, $regs)) {
$quote = str_word_count($regs[0], 1);
$data = str_replace($regs[0], '"'.implode(' ', $quote).'"', $data);
}

echo $data;


5 commentaires

Avez-vous essayé des opérateurs logiques, spécifiquement && ? php.net/manual/fr/language.opérators.logical.php


Cela ne fonctionnerait pas car la regex est toujours vraie, je dois effectuer uniquement la correspondance de Regex si le test de texte est trouvé.


En fait, cela fonctionne toujours. L'ordinateur est intelligent et essaie uniquement la regex si le premier chèque échoue. Cela s'appelle une évaluation de court-circuit. en.wikipedia.org/wiki/short_circuit_evaluation


Dans "if (a && b)", si un échec, B ne fonctionnera pas.


@Tesserex ahhh, je devrais rester bloqué avec cela, merci pour la clarification, malade savoir mieux la prochaine fois. :)


4 Réponses :


5
votes

Voulez-vous dire que vous voulez nier un à l'autre? XXX

Vous pouvez également modifier cela pour utiliser && (ce qui signifie "et"): < / p> xxx

En outre, votre code utilise ! == . Est-ce ce que vous vouliez dire ou avez-vous voulu dire ! = ? Je crois qu'ils ont des significations différentes - je sais que ! = signifie "pas égal" mais je ne suis pas sûr de ! == .


0 commentaires

4
votes

Nettez simplement vos déclarations si

if (stripos($data, 'test') !== false) {
    if (preg_match('/"[^"]*"/i', $data, $regs)) {
        $quote = str_word_count($regs[0], 1);
        $data = str_replace($regs[0], '"'.implode(' ', $quote).'"', $data);
    }

}


0 commentaires

14
votes

soit:

if (stripos($data, 'test') !== false && preg_match('/"[^"]*"/i', $data, $regs)) {
    $quote = str_word_count($regs[0], 1);
    $data = str_replace($regs[0], '"'.implode(' ', $quote).'"', $data);
}


0 commentaires

2
votes
if (stripos($data, 'test') !== false) {
  if (preg_match('/"[^"]*"/i', $data, $regs)) {
  $quote = str_word_count($regs[0], 1);
  $data = str_replace($regs[0], '"'.implode(' ', $quote).'"', $data);
  }
}

0 commentaires