Condição múltipla negada

  • Autor Autor xaiborweb
  • Data de início Data de início
Tradução em andamento: em alguns minutos este tópico estará em português. Por enquanto, o conteúdo está no original em espanhol. Ver original
xaiborweb

xaiborweb

Dseda
Programador
No recomendado
Usuário com poucas negociações! Use sempre o saldo do ForoBeta!
hola tengo la siguiente condición.
PHP:
if (stripos($html_result[1][0], 'TV Series')||stripos($html_result[1][0], 'TV Episode')||stripos($html_result[1][0], 'Mini-Series')||stripos($html_result[1][0], 'Video Game') ){
		echo '1';
	}elseif (stripos($html_result[1][1], 'TV Series')||stripos($html_result[1][1], 'TV Episode')||stripos($html_result[1][1], 'Mini-Series')||stripos($html_result[1][1], 'Video Game') ){
		echo '2';
	}
y si se cumple pero cuando la quiero negar ya no se cumple como debería que estoy haciendo mal?
PHP:
if (!stripos($html_result[1][0], 'TV Series')||!stripos($html_result[1][0], 'TV Episode')||!stripos($html_result[1][0], 'Mini-Series')||!stripos($html_result[1][0], 'Video Game') ){
		echo '1';
	}elseif (!stripos($html_result[1][1], 'TV Series')||!stripos($html_result[1][1], 'TV Episode')||!stripos($html_result[1][1], 'Mini-Series')||!stripos($html_result[1][1], 'Video Game') ){
		echo '2';
	}

gracias 😉
 
Foi útil? Participe da conversa

Com sua conta grátis você pode responder, mandar mensagem privada ao autor e comprar com Saldo retido: o pagamento é liberado quando você recebe o combinado.

Leva 30 segundos · você volta a este tópico ao terminar
Que contiene la variable $html_result y que resultado te arroja en cada caso?
 
Que contiene la variable $html_result y que resultado te arroja en cada caso?

un texto y quiero que si no tiene ningua de esas palabras entonces entre
 
Todo, deberías hacerlo de nuevo.

En el primer caso si algo se cumple cualquiera, da 1, de lo contrario se pasa al segundo if, si cualquiera es correcto entonces es 2.

En la negacion, desde el primer valor que se comprueba si este no se encuentra, entonces manda 1, o cualquiera que no encuentre manda 1.
Para que el segundo if se ejecute la variable [1][0] no deberia tener ninguna de las palabras de la lista anterior.

Debes tener en cuenta que es lo que quieres hacer primero, no se puede reutilizar la misma logica.

Si en el segundo fragmento, quieres que mande 1 solo si no se encuentra ninguna de las palabras, tendrias que usar AND para que pase al segundo if.


Negacion con OR.

Si palabra_existe falla (no existe) imprime 1 y termina ejecucion.
Si palabra_existe da true, entonces se pasa a cualquiera de las palabras a comprobar hasta que una de false, si ninguna da false se va al elseif.

Edito: AND AND AND AND AND AND
 
nuegalo todo no indivialmente 😀 !!
 
Todo, deberías hacerlo de nuevo.

En el primer caso si algo se cumple cualquiera, da 1, de lo contrario se pasa al segundo if, si cualquiera es correcto entonces es 2.

En la negacion, desde el primer valor que se comprueba si este no se encuentra, entonces manda 1, o cualquiera que no encuentre manda 1.
Para que el segundo if se ejecute la variable [1][0] no deberia tener ninguna de las palabras de la lista anterior.

Debes tener en cuenta que es lo que quieres hacer primero, no se puede reutilizar la misma logica.

Si en el segundo fragmento, quieres que mande 1 solo si no se encuentra ninguna de las palabras, tendrias que usar AND para que pase al segundo if.


Negacion con OR.

Si palabra_existe falla (no existe) imprime 1 y termina ejecucion.
Si palabra_existe da true, entonces se pasa a cualquiera de las palabras a comprobar hasta que una de false, si ninguna da false se va al elseif.

Edito: AND AND AND AND AND AND

gracias por responder ya lo solucione y adjunto el código completo como tutorial por si alguien lo quiere sirve para a partir de un titulo y año encontrar el id de imdb de la película, se puede enviar un año de hasta 2 años de desface positivo o negativo, por si están haciendo bots, algunas paginas tiene año de la movie diferente que imdb pues con este script aun asi lo cotejara.
PHP:
<?php
$titulo = 'Imperium';
$año = '2016';
$type = 'movie';
$ch = curl_init('http://www.imdb.com/find?q='.$titulo.'&s=tt'); 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_REFERER, 'http://www.imdb.com/');
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.143 Safari/537.36');
curl_setopt($ch, CURLOPT_HTTPHEADER,array('Accept-Language: en'));
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
$results = curl_exec($ch); 
curl_close($ch);
preg_match_all("(<tr class=\"findResult(.*)</tr>)siU", $results, $html_result);

if ($type == 'movie'){
	$movie1 = (stripos($html_result[1][0], 'TV Series')||stripos($html_result[1][0], 'TV Episode')||stripos($html_result[1][0], 'Mini-Series')||stripos($html_result[1][0], 'Video Game') );
	$movie2 = (stripos($html_result[1][1], 'TV Series')||stripos($html_result[1][1], 'TV Episode')||stripos($html_result[1][1], 'Mini-Series')||stripos($html_result[1][1], 'Video Game') );
	$movie3 = (stripos($html_result[1][2], 'TV Series')||stripos($html_result[1][2], 'TV Episode')||stripos($html_result[1][2], 'Mini-Series')||stripos($html_result[1][2], 'Video Game') );

	if ($movie1 === false) {
		echo '1, ';
		if (stripos($html_result[1][0], $año)||stripos($html_result[1][0],(string)($año+1))||stripos($html_result[1][0],(string)($año-1))||stripos($html_result[1][0],(string)($año+2))||stripos($html_result[1][0],(string)($año-2)) ){
			preg_match_all("(href=\"(.*)\")siU", $html_result[1][0], $link_imdb);	$idimdb = explode('/',$link_imdb[1][0]);
            echo $id_imdb = $idimdb[2];
        }else{
            if ($movie2 === false) {
            	echo '1.1, ';
            	if (stripos($html_result[1][1], $año)||stripos($html_result[1][1],(string)($año+1))||stripos($html_result[1][1],(string)($año-1))||stripos($html_result[1][1],(string)($año+2))||stripos($html_result[1][1],(string)($año-2)) ){
		            preg_match_all("(href=\"(.*)\")siU", $html_result[1][1], $link_imdb);	$idimdb = explode('/',$link_imdb[1][0]);
		            echo $id_imdb = $idimdb[2];
		        }
            }else{
            	echo false;
            }
        }
	}elseif ($movie2 === false) {
		echo '2, ';
		if (stripos($html_result[1][1], $año)||stripos($html_result[1][1],(string)($año+1))||stripos($html_result[1][1],(string)($año-1))||stripos($html_result[1][1],(string)($año+2))||stripos($html_result[1][1],(string)($año-2)) ){
            preg_match_all("(href=\"(.*)\")siU", $html_result[1][1], $link_imdb);	$idimdb = explode('/',$link_imdb[1][0]);
            echo $id_imdb = $idimdb[2];
        }else{
            if ($movie3 === false) {
            	echo '2.1, ';
            	if (stripos($html_result[1][2], $año)||stripos($html_result[1][2],(string)($año+1))||stripos($html_result[1][2],(string)($año-1))||stripos($html_result[1][2],(string)($año+2))||stripos($html_result[1][2],(string)($año-2)) ){
		            preg_match_all("(href=\"(.*)\")siU", $html_result[1][2], $link_imdb);	$idimdb = explode('/',$link_imdb[1][0]);
		            echo $id_imdb = $idimdb[2];
		        }
            }else{
            	echo false;
            }
        }
	}elseif ($movie3 === false) {
		echo '3, ';
		if (stripos($html_result[1][2], $año)||stripos($html_result[1][2],(string)($año+1))||stripos($html_result[1][2],(string)($año-1))||stripos($html_result[1][2],(string)($año+2))||stripos($html_result[1][2],(string)($año-2)) ){
            preg_match_all("(href=\"(.*)\")siU", $html_result[1][2], $link_imdb);	$idimdb = explode('/',$link_imdb[1][0]);
            echo $id_imdb = $idimdb[2];
        }else{
            echo false;   
        }
	}
}else{
//serie
}

- - - Actualizado - - -

nuegalo todo no indivialmente 😀 !!

y como lo niego todo?
 
lo pones entre parentesis y lo niegas !( )
 
Cuando quieres hacer la negación de un OR tienes que cambiarlo por AND, por ejemplo:

PHP:
if (condition || condition || condition) {
    # code...
}

por:
PHP:
if (!condition && !condition && !condition) {
    # code...
}

O como te comentaron, simplemente metiendo todo en paréntesis.

Saludos.
 
Voltar
Topo