montano 0 Denunciar post Postado Julho 24, 2009 boa tarde, como eu posso fazer para saber se uma palavra ja existe em um array. por exemplo: $novoProduto = 'camisa'; $produto[1] = camisa; $produto[2] = calça; no caso eu quero fazer um laço que compare todas posiçoes do array com uma variavel. se existe ignora, se nao existe inserir no array a palavra. Eu posso fazer com foreach? como ficaria mais ou menos nao consegui entender direito o foreach. vlw pessoal Compartilhar este post Link para o post Compartilhar em outros sites
João Batista Neto 448 Denunciar post Postado Julho 24, 2009 como eu posso fazer para saber se uma palavra ja existe em um array. por exemplo: $novoProduto = 'camisa'; $produto[1] = camisa; $produto[2] = calça; no caso eu quero fazer um laço que compare todas posiçoes do array com uma variavel. se existe ignora, se nao existe inserir no array a palavra. Eu posso fazer com foreach? como ficaria mais ou menos nao consegui entender direito o foreach. Bom, dependendo da sua aplicação o ideal é utilizar uma matriz associativa auxiliar, mas você pode utilizar também in_array $arr = array(); $arr[] = "camisa"; $arr[] = "calça"; $verifica = "teste"; if ( !in_array( $verifica , $arr ) ){ $arr[] = $verifica; } var_dump( $arr ); if ( !in_array( $verifica , $arr ) ){ $arr[] = $verifica; } var_dump( $arr ); A saída deverá ser: array(3) { [0]=> string(6) "camisa" [1]=> string(5) "calça" [2]=> string(5) "teste" } array(3) { [0]=> string(6) "camisa" [1]=> string(5) "calça" [2]=> string(5) "teste" } Mas essa verificação é lenta, então, dependendo do que você for fazer é altamente recomendável utilizar uma matriz associativa para essa verificação. Compartilhar este post Link para o post Compartilhar em outros sites
~TiuTalk~ 7 Denunciar post Postado Julho 24, 2009 Uma outra forma de se fazer é assim: $novoProduto = 'camisa'; $produto[] = 'camisa'; $produto[] = 'calça'; if (array_search($novoProduto, $produto) === false) { $produto[] = $novoProduto; } Compartilhar este post Link para o post Compartilhar em outros sites
Matias Rezende 50 Denunciar post Postado Julho 25, 2009 Olha, vou sugerir uma leitura.. http://br.php.net/manual/pt_BR/book.array.php Tem várias funções que podem fazer o que você quer... Por exemplo, você pode inserir e depois usar array_unique para tirar os repetidos. Carlos Eduardo Compartilhar este post Link para o post Compartilhar em outros sites
guhfloripa 0 Denunciar post Postado Julho 26, 2009 Olha, vou sugerir uma leitura.. http://br.php.net/manual/pt_BR/book.array.php Tem várias funções que podem fazer o que você quer... Por exemplo, você pode inserir e depois usar array_unique para tirar os repetidos. Carlos Eduardo eu ja utilizei o array_unique e nao vi ferramenta melhor, e que seja mais rapida para tirar elementos repetidos dentro de um array. Porem se eu quiser retirar os elementos repetidos e motrar na tela os repetidos, tem como fazer? (usando array_unique) obrigado. Compartilhar este post Link para o post Compartilhar em outros sites
Matias Rezende 50 Denunciar post Postado Julho 26, 2009 Tenta assim... usa array_intersect para mostrar os repetidos e depois usa o array_unique. Não deixe de olhar o link que mandei antes. Não precisa entrar em todas as funções... leia a descrição delas que já resolve. Carlos Eduardo Compartilhar este post Link para o post Compartilhar em outros sites
montano 0 Denunciar post Postado Julho 27, 2009 class Exemplo { public $situacoes_geral; function situacoesGeral($situacao,$qtsituacao){ if (array_search($situacao, $situacoes_geral) === false) { $situacoes_geral[] = $situacao; } } } eu to tentando fazer assim: soh que junto com o nome da situacao tem a quantidade de item por situacao. soh para voces ficarem por dentro, isso eu estou fazendo porque eu tenho 5 BD´s, cada um com 1 tb_contratos que tem 1 campo 'situacao'. digamos eu tenho no BD 1: 3 situacoes X e 2 Y, no BD 2: 1 situacoes X. e assim por diante.. eu preciso agrupar as situaçoes somando os valores. soh que sao de 5 BD´s diferentes. eu uso um objeto para cada BD. eu acho que a maneira mais certa a fazer esse agrupamento, é por um array, mas nao tem como fazer isso com um SELECT COUNT soh que um SELECT que varra 5 BD´s diferentes ? valeu pela ajuda, estou lendo os links enviados. abraços Compartilhar este post Link para o post Compartilhar em outros sites
Matias Rezende 50 Denunciar post Postado Julho 27, 2009 São 5 BANCOS DE DADOS ou 5 TABELAS???? Carlos Eduardo Compartilhar este post Link para o post Compartilhar em outros sites
montano 0 Denunciar post Postado Julho 27, 2009 sao 5 Banco de Dados. cada um com 1 tb_contratos.Nessa tabela contrato tem um campo situacao. Eu tenho no BD1 5 linhas da tb_contratos, uma com o campo situacao preenchido com X e 4 com Y, e assim nos outros 4 BD´s. eu preciso ler esses 5 Banco de Dados, contando quantas tem com situacao X e quantas com situacao Y. agrupando por situacao. se fosse com 1 BD eu faria.. SELECT COUNT (cod) from tb_situacao GROUP BY situacao ASC mas o problema é que eu preciso fazer isso em 5 BD´s diferentes.. Compartilhar este post Link para o post Compartilhar em outros sites
João Batista Neto 448 Denunciar post Postado Julho 27, 2009 sao 5 Banco de Dados. cada um com 1 tb_contratos.Nessa tabela contrato tem um campo situacao. Eu tenho no BD1 5 linhas da tb_contratos, uma com o campo situacao preenchido com X e 4 com Y, e assim nos outros 4 BD´s. eu preciso ler esses 5 Banco de Dados, contando quantas tem com situacao X e quantas com situacao Y. agrupando por situacao. Você faz a mesma coisa, só que adicionando a referência ao banco de dados: Criando os banco de dados: mysql> create schema `bd1`; Query OK, 1 row affected (0.00 sec) mysql> create schema `bd2`; Query OK, 1 row affected (0.00 sec) mysql> create schema `bd3`; Query OK, 1 row affected (0.00 sec) Criando as tabelas: mysql> create table `bd1`.`tabela` ( -> `id` mediumint(8) unsigned not null auto_increment, -> `nome` varchar(20) not null, -> `situacao` enum('X','Y') not null default 'X', -> primary key(`id`), -> key `situacao`(`situacao`) -> ) engine=MySQL; Query OK, 0 rows affected, 2 warnings (0.00 sec) mysql> create table `bd2`.`tabela` ( -> `id` mediumint(8) unsigned not null auto_increment, -> `nome` varchar(20) not null, -> `situacao` enum('X','Y') not null default 'X', -> primary key(`id`), -> key `situacao`(`situacao`) -> ) engine=MySQL; Query OK, 0 rows affected, 2 warnings (0.00 sec) mysql> create table `bd3`.`tabela` ( -> `id` mediumint(8) unsigned not null auto_increment, -> `nome` varchar(20) not null, -> `situacao` enum('X','Y') not null default 'X', -> primary key(`id`), -> key `situacao`(`situacao`) -> ) engine=MySQL; Query OK, 0 rows affected, 2 warnings (0.00 sec) Agora inserindo alguns valores: mysql> insert into `bd1`.`tabela`(`nome`,`situacao`) values ( 'Teste 1 bd1' , 'X' ),( 'Teste 2 bd1' , 'Y' ),( 'Teste 3 bd1' , 'X' ); Query OK, 3 rows affected (0.00 sec) Records: 3 Duplicates: 0 Warnings: 0 mysql> insert into `bd2`.`tabela`(`nome`,`situacao`) values ( 'Teste 1 bd2' , 'X' ),( 'Teste 2 bd2' , 'Y' ); Query OK, 2 rows affected (0.00 sec) Records: 2 Duplicates: 0 Warnings: 0 mysql> insert into `bd3`.`tabela`(`nome`,`situacao`) values ( 'Teste 1 bd3' , 'X' ),( 'Teste 2 bd3' , 'Y' ); Query OK, 2 rows affected (0.00 sec) Records: 2 Duplicates: 0 Warnings: 0 Agora fazendo a consulta: mysql> select -> (select -> count(*) + -> (select count(*) from `bd2`.`tabela` t2 where ( t2.`situacao` = 'X' )) + -> (select count(*) from `bd3`.`tabela` t3 where ( t3.`situacao` = 'X' )) -> from -> `bd1`.`tabela` t1 -> where -> ( t1.`situacao` = 'X' )) "TotalX", -> (select -> count(*) + -> (select count(*) from `bd2`.`tabela` t2 where ( t2.`situacao` = 'Y' )) + -> (select count(*) from `bd3`.`tabela` t3 where ( t3.`situacao` = 'Y' )) -> from -> `bd1`.`tabela` t1 -> where -> ( t1.`situacao` = 'Y' )) "TotalY"; +--------+--------+ | TotalX | TotalY | +--------+--------+ | 4 | 3 | +--------+--------+ 1 row in set (0.00 sec) Compartilhar este post Link para o post Compartilhar em outros sites
montano 0 Denunciar post Postado Julho 27, 2009 opa, valeu pela ajuda, mas nao sei se você entendeu bem, ou eu que nao to entendendo seu codigo. eu ja tenho as tabelas e os bds criados, aquele seu select onde que é identificado qual Banco de Dados ele ta selecionando? vlw Compartilhar este post Link para o post Compartilhar em outros sites
Matias Rezende 50 Denunciar post Postado Julho 28, 2009 select count(*) from `bd2`.`tabela` t2 where ( t2.`situacao` = 'X'// onde bd2 é o nome do banco. Carlos Eduardo Compartilhar este post Link para o post Compartilhar em outros sites
montano 0 Denunciar post Postado Julho 28, 2009 opa, entendi, e isso tem como ser feito nos 5 bd´s ao mesmo tempo? fazendo GROUP BY situacao? select count(*) from `bd2`.`tabela` t2 where ( t2.`situacao` = 'X'// onde bd2 é o nome do banco. no caso do seu exemplo eu estou contando soh do bd2 correto? , teria como contar do bd1,bd2,bd3,bd4,bd5 fazendo GROUP BY situacao em todos junto? valeuu Compartilhar este post Link para o post Compartilhar em outros sites
João Batista Neto 448 Denunciar post Postado Julho 28, 2009 opa, entendi, e isso tem como ser feito nos 5 bd´s ao mesmo tempo? fazendo GROUP BY situacao? no caso do seu exemplo eu estou contando soh do bd2 correto? , teria como contar do bd1,bd2,bd3,bd4,bd5 fazendo GROUP BY situacao em todos junto? No caso do exemplo que eu passei a contagem é feita nos bancos de dados `bd1`, `bd2` e `bd3`: mysql> select -> (select -> count(*) + -> (select count(*) from `bd2`.`tabela` t2 where ( t2.`situacao` = 'X' )) + -> (select count(*) from `bd3`.`tabela` t3 where ( t3.`situacao` = 'X' )) -> from -> `bd1`.`tabela` t1 -> where -> ( t1.`situacao` = 'X' )) "TotalX", -> (select -> count(*) + -> (select count(*) from `bd2`.`tabela` t2 where ( t2.`situacao` = 'Y' )) + -> (select count(*) from `bd3`.`tabela` t3 where ( t3.`situacao` = 'Y' )) -> from -> `bd1`.`tabela` t1 -> where -> ( t1.`situacao` = 'Y' )) "TotalY"; +--------+--------+ | TotalX | TotalY | +--------+--------+ | 4 | 3 | +--------+--------+ 1 row in set (0.00 sec) Compartilhar este post Link para o post Compartilhar em outros sites
montano 0 Denunciar post Postado Julho 28, 2009 ta okay, obrigado joao, eu vou testar aqui e respondo se funcionou.. valeu pela ajuda Compartilhar este post Link para o post Compartilhar em outros sites