Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Maykel-ctba

Comparar array a string

Recommended Posts

Fala galera,

 

Dúvida simples, mas me deu um branco geral:

 

Tenho o seguinte array:

$arrayExclusao = array("_dbo_0i","miae0a","avr09kce","df_uqadyp0o5h");

Gostaria de que, caso a string $className tivesse algum destes índices que constam no array, NÃO efetuasse o include. Mas não sei qual comando do PHP usar neste caso:

$className = "_dbo_0i";

if(){ // * Aqui... o que fazer?
    include($className);
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu juro que tentei o in_array, mas acontece algo muito estranho... ele não entra na condição desejada.

 

O in_array busca pelo termo completo? Ou funciona como o strpos?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Funciona como uma comparação normal $var == $var2, na prática é semelhante a usar um foreach e varrer todo array e dentro do laço fazer a comparação.

 

Fiz um teste rápido aqui e retornou conforme esperado:

http://edgarserra.com/teste.php?t=_dbo_0i (encontrou)

http://edgarserra.com/teste.php?t=_xdbo_0i (não encontrou)

 

<?php


$className = $_GET['t'];
$arrayExclusao = array("_dbo_0i","miae0a","avr09kce","df_uqadyp0o5h");
//echo $className;
if(!in_array($className, $arrayExclusao)){ // * Aqui... o que fazer?
    //include($className);
    echo 'não encontrou';
}else{
    echo 'encontrou';
}


?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Entendi.

Não é como o LIKE '%string%' do MySQL.

 

Beleza, eu imaginei que tivesse que usar algo assim. Eu até tinha conhecimento do in_array, mas ele não estava dando o resultado esperado pq compara a string completa. hehe.

 

Valeu!

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Eserra,

 

Acho que o problema é mais embaixo.

 

Primeiro de tudo, hospedei o site no ambiente de produção, e o autoload está detectando diversas classes que não existem (por isso, os códigos aleatórios em $arrayExclusao).

 

Com isso, ele está enchendo a tela de erros. Como não sei de onde estas classes estão vindo, estou tentando verificar se a classe tem $arrayExclusao no nome, para ignorar a inclusão no autoload.

define( "CLASS_DIR", __DIR__.DIRECTORY_SEPARATOR."class".DIRECTORY_SEPARATOR );
$arrayExclusao = array("_dbo_0i","miae0a","avr09kce","df_uqadyp0o5h","0u3de5zp","wgo3s","b_l5qk","xa97c_","bu8m3v","zt_z97z9lp","t_0","38_lz4qv","xwok","g2ahydo","72a5","5hcibvljfet","xl58p","_xlka","ewjmn","d_xhwrc");
spl_autoload_register(function($class){
	$className = CLASS_DIR.str_replace("\\", DIRECTORY_SEPARATOR, $class).".php";	
	if(!in_array($class,$arrayExclusao)){
		include($className);
	}
});

Mas ele continua incluindo...

Dei um echo em $class para ver o que estava retornando, e veja (retirei vários para sermos mais objetivos):

Cliente
Query
Config
_dbo_0i
_dbo_0i
miae0a
miae0a
Conteudo
avr09kce
avr09kce

E aí, são gerados diversos erros de inclusão:

Warning: in_array() expects parameter 2 to be array, null given in D:\Domains\lavitta.com.br\wwwroot\intranet\common\autoload.php on line 20
Warning: include(D:\Domains\lavitta.com.br\wwwroot\intranet\common\class\_dbo_0i.php) [function.include]: failed to open stream: No such file or directory in D:\Domains\lavitta.com.br\wwwroot\intranet\common\autoload.php on line 21
Warning: include() [function.include]: Failed opening 'D:\Domains\lavitta.com.br\wwwroot\intranet\common\class\_dbo_0i.php' for inclusion (include_path='c:\php5.3fastcgi\dev;c:\php5.3fastcgi\ext;c:\php5.3fastcgi\extras;c:\php5.3fastcgi\extras\pdf-related;.') in D:\Domains\lavitta.com.br\wwwroot\intranet\common\autoload.php on line 21

PS: $arrayExclusao foi criado após os erros serem detectados. Ele não é responsável pelos erros de inclusão.

 

 

Pode me ajudar?

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.