Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Tenho uma consulta onde preciso che
$strRequeridos = '{1004} AND ({1003} OR {1042} OR {1037} OR {1038} OR {1032} OR {1033} OR {1035} OR {1036})';
$arrSelecionados = array( '1037', '1042', '1111' );
$ini = str_replace('{', 'in_array(', $strRequeridos);
$ini = str_replace('}', ', $arrSelecionados)', $ini);
#retorno in_array(1004, $arrSelecionados) AND (in_array(1003, $arrSelecionados) OR in_array(1042, $arrSelecionados) OR in_array(1037, $arrSelecionados) OR in_array(1038, $arrSelecionados) OR in_array(1032, $arrSelecionados) OR in_array(1033, $arrSelecionados) OR in_array(1035, $arrSelecionados) OR in_array(1036, $arrSelecionados))
Tentei usar o eval() e jogar isso dentro em if, mas não estou conseguido:
if( eval($ini) )
Como chamar essa string no if?
Preciso checar se o trecho tratado retornou true ou false
Se eu jogar direto a string no if, não funciona.
Você quer checar se o str_replace funcionou é isso?
amigo, consegui assim:
$strRequeridos = '{1004} AND ({1003} OR {1042} OR {1037} OR {1038} OR {1032} OR {1033} OR
{1035} OR {1036})';
$arrSelecionados = array( '1037', '1042', '1111' );
$ini = str_replace('{', 'in_array(', $strRequeridos);
$ini = str_replace('}', ', $arrSelecionados)', $ini);
eval("if(" . $ini . ") { echo 'true'; }else{ echo 'false'; }");
abraço!
Tenta algo tipo isso:
if(eval("return (\$ini) ? true : false;")):
echo 'sucesso!';
endif;Obrigado crucifier e Kratos Zohr, era isso mesmo que precisava e os dois exemplos funcionaram.
Também havia conseguido da seguinte forma:
if( eval("return (".$ini.");") )
{
echo 'true';
} echo 'false';
}
Amigo Ghean não entendi lhufas cara.
Você precisa do in_array pois esta fazendo uma consulta no SQL Server não é isso?
dai você faz um replace pra deixar a consulta ok.
Até aqui tudo bem. Agora ... pra que d...bos você precisa do eval?? :huh:
Explica melhor oque tu quer fazer para podermos lhe ajudar.
Abraços.