Kakashi_Hatake 267 Denunciar post Postado Outubro 9, 2011 Não funciona porque as variáveis e o objeto estão no escopo da função. Você tem que passar o objeto TCarrinho, e as variáveis $id_produto e $id_lista. <?php Class TCarrinho { private $item_codigo; private $item_lista; public function __construct( ) { $this->item_codigo = array( 3, 6, 3, 5, 9 ); $this->item_lista = array( 1, 1, 5, 7, 6 ); } public function getParItem( ) { for( $i = 0; $i < count( $this->item_codigo ); $i++ ) { $par_item[ ] = array( $this->item_codigo[ $i ], $this->item_lista[ $i ] ); } return $par_item; } } function array_array( TCarrinho $MeuCarrinho, $id_produto, $id_lista ) { $par_item = $MeuCarrinho->getParItem( ); for( $cl = 0; $cl< count( $par_item ); $cl++ ) { if( $id_produto == $par_item[ $cl ] [ 0 ] and $id_lista == $par_item[ $cl ] [ 1 ] ) { return true; } } return false; } $MeuCarrinho = new TCarrinho; var_dump( array_array( $MeuCarrinho, 3, 5 ) ); // boolean true var_dump( array_array( $MeuCarrinho, 3, 9 ) ); // boolean false Compartilhar este post Link para o post Compartilhar em outros sites
Carcleo 4 Denunciar post Postado Outubro 9, 2011 O problema aqui é que a ssessão Carrinho ja esta criada e no teu exemplo, você criou ela de novo. E todo caso, fiz assim: function array_array( TCarrinho $MeuCarrinho, $id_produto, $id_lista ) { $par_item = $MeuCarrinho->getParItem( ); for( $cl = 0; $cl< count( $par_item ); $cl++ ) { if( $id_produto == $par_item[ $cl ] [ 0 ] and $id_lista == $par_item[ $cl ] [ 1 ] ) { return true; } } return false; } if(array_array( $MeuCarrinho, $id_produto, $id_lista )==false) // if (array_array()==false) { ....... E continuou não exibindo os dados. Compartilhar este post Link para o post Compartilhar em outros sites
Kakashi_Hatake 267 Denunciar post Postado Outubro 9, 2011 Como você percebeu, eu criei um objeto TCarrinho apenas para exemplificar, é claro que você vai passar o objeto já criado e não criar um novo. ;) Você vai ter que debugar isso antes do IF e veja se está entrando os dados que você está esperando que entrem(o array com os valores corretos e as variáveis também). echo $id_produto, ' = ', $par_item[ $cl ] [ 0 ], '<br/>', $id_lista, ' = ', $par_item[ $cl ] [ 1 ], '<hr>'; if( $id_produto == $par_item[ $cl ] [ 0 ] and $id_lista == $par_item[ $cl ] [ 1 ] ) { continua... Em vez de usar direto a função, faça um teste(debugar) no retorno para ver se em algum momento retorna TRUE. var_dump( array_array( $MeuCarrinho, $id_produto, $id_lista ) ); if(array_array( $MeuCarrinho, $id_produto, $id_lista )==false) Compartilhar este post Link para o post Compartilhar em outros sites
Carcleo 4 Denunciar post Postado Outubro 9, 2011 Assim? while(list($id_lista, $foto, $id_produto, $nome_produto, $id_fornece, $nome_razao_fornece, $nome_grupo, $quantidadecaixa, $preco, $condicao,$observacao, $imposto) = mysql_fetch_row($sql_produtos_query)) { if(session_is_registered("MeuCarrinho")) { function array_array($MeuCarrinho, $id_produto, $id_lista ) { $par_item = $MeuCarrinho->getParItem(); for( $cl = 0; $cl< count( $par_item ); $cl++ ) { echo $id_produto, ' = ', $par_item[ $cl ] [ 0 ], '<br/>', $id_lista, ' = ', $par_item[ $cl ] [ 1 ], '<p>'; if( $id_produto == $par_item[ $cl ] [ 0 ] and $id_lista == $par_item[ $cl ] [ 1 ] ) { return true; } } return false; } print "<p>-----<p>"; var_dump( array_array( $MeuCarrinho, $id_produto, $id_lista ) ); print "<p>-----<p>"; if(array_array( $MeuCarrinho, $id_produto, $id_lista )==false) { echo "<input type=\"hidden\" name=\"{$i}[id_prod]\" id=\"{$i}[id_prod]\" value=\"$id_produto\"> <input type=\"hidden\" name=\"{$i}[quan]\" id=\"{$i}[quan]\" value=\"\"> <input type=\"hidden\" name=\"{$i}[id_lista]\" name=\"{$i}[id_lista]\" value=\"$id_lista\"> <input type=\"hidden\" name=\"{$i}[imposto]\" name=\"{$i}[imposto]\" value=\"$imposto\"> "; Retornou isso bool(true) Parece que deu um exit no final da pagina mas não tem exit. Compartilhar este post Link para o post Compartilhar em outros sites
Kakashi_Hatake 267 Denunciar post Postado Outubro 9, 2011 Como você pode ver, a função está cumprindo com o esperado, ela encontrou a combinação e retornou TRUE. Agora basta você fazer o que deve ser feito caso NÂO exista a combinação. if( ! array_array( $MeuCarrinho, $id_produto, $id_lista ) ) { // false Compartilhar este post Link para o post Compartilhar em outros sites
Carcleo 4 Denunciar post Postado Outubro 9, 2011 Carlos Coelho. Funcionou. Foi só tirar a função de dentro dos whiles todos. Muito obrigado pelo apoio. Se tiver como eu retribuir estarei ai. Compartilhar este post Link para o post Compartilhar em outros sites
Kakashi_Hatake 267 Denunciar post Postado Outubro 9, 2011 Minha satisfação é de poder ajudar. :D Se no final deu tudo certo, já está ótimo Até :thumbsup: Compartilhar este post Link para o post Compartilhar em outros sites