pinoc 2 Denunciar post Postado Setembro 3, 2012 Opa pessoal. Seguinte to recebendo direto por metodo POST a seguinte array. $local = implode( ' ', $_POST['localpagina']); Minha duvida é a seguinte como faço para filtrar ela pois quando do echo ela vem da seguinte forma Destaque Selecione Selecione Selecione Selecione Selecione Selecione Que não esta errado para meu codigo, so preciso filtrar para apenas sumir os Selecione e ficar apenas o Destaque ou o valor que for passado por POST diferente de Selecione. Até pelas minha pesquisas aqui achei o array_reduce mais não sei utiliza-lo e não sei nem se da para utilizar como eu quero. Obrigado desde já. Compartilhar este post Link para o post Compartilhar em outros sites
Gabriel Jacinto 74 Denunciar post Postado Setembro 3, 2012 Pelo o que eu entendi, com str_replace daria: $local = str_replace('Selecione', '', $_POST['localpagina']); Compartilhar este post Link para o post Compartilhar em outros sites
Gabriel Heming 766 Denunciar post Postado Setembro 3, 2012 É só não utilizar o implode. Utilize uma iteração no lugar. foreach($_POST['localpagina'] AS $input) { if($input == 'Destaque') { /** código **/ } else if($input == 'Selecione') { /** código **/ } } Assim você trabalha do jeito que você quiser os valores. Compartilhar este post Link para o post Compartilhar em outros sites
pinoc 2 Denunciar post Postado Setembro 3, 2012 Assim eu preciso que basicamente a array não seja uma array depois de receber os valores por POST. Estou recebendo Destaque Selecione Selecione Selecione Selecione Selecione Selecione, mais esse resultado depende muito doque for colocado no formulario basicamente sempre vo receber na array com 6 Selecione e um valor diferente que nesse caso aqui é Destaque mais nem sempre sera Destaque. Resumindo preciso que a array se torne um valor unico que sera nesse caso Destaque lembrando que nem sempre sera Destaque Compartilhar este post Link para o post Compartilhar em outros sites
Gabriel Heming 766 Denunciar post Postado Setembro 3, 2012 Seja mais específico. Responda essas perguntas: - O valor que deve permanecer é único e nunca se repetirá? - Todos os "demais" valores serão selecione? - O que é exatamente o que está tentando fazer? Não precisa responder todas as perguntas, mas quando mais, melhor. Assim poderemos encontrar uma solução ao seu problema. Compartilhar este post Link para o post Compartilhar em outros sites
pinoc 2 Denunciar post Postado Setembro 3, 2012 Seja mais específico. Responda essas perguntas: - O valor que deve permanecer é único e nunca se repetirá? - Todos os "demais" valores serão selecione? - O que é exatamente o que está tentando fazer? Não precisa responder todas as perguntas, mas quando mais, melhor. Assim poderemos encontrar uma solução ao seu problema. Opa Gabriel Heming - O valor que deve permanecer é único e nunca se repetirá? O valor que deve permanecer é unico porem vai ser alterado, dependendo doque for selecionado no LISTBOXES do form, sendo que esse valor que precisa ficar nem sempre ficara em primeiro lugar ou segundo da array, entende!?. - Todos os "demais" valores serão selecione? Sim apenas um valor sera diferente o restante sempre sera selecione. - O que é exatamente o que está tentando fazer? Quero simplesmente remover todos os selecione deixando apenas um valor o diferente. Obrigado por estar ajudando :) Compartilhar este post Link para o post Compartilhar em outros sites
Gabriel Jacinto 74 Denunciar post Postado Setembro 3, 2012 Você quis dizer Gabriel Heming, deve ter se confundido, os dois são Gabriel, kkk. Mas bem, o que o outro Gabriel disse, resolveria seu problema, acho. Fazer um foreach, por exemplo, assim: $local = $_POST['localpagina']; $array = array("".$local."", "Selecione", "Selecione", "Selecione", "Selecione", "Selecione", "Selecione"); foreach($array as $list){ if($list == $local){ echo $local; } } Compartilhar este post Link para o post Compartilhar em outros sites
Gabriel Heming 766 Denunciar post Postado Setembro 3, 2012 Acho que com as funções array_count_values() e array_search() será o modo mais fácil e rápido. Como o manual do PHP está fora, ao menos pra mim, w3schools serve. array_count_values() serve para retornar contar a quantidade de vezes que um valor se repete: $a = array("Destaque" , "Selecione" , "Selecione" , "Selecione" , "Selecione"); print_r(array_count_values($a)); Saída: Array ( [Destaque] => 1 [selecione] => 4 ) Já array_search(), serve para buscar a KEY de um determinado valor. No seu caso, o valor de busca é 1. $a = array("Destaque" , "Selecione" , "Selecione" , "Selecione" , "Selecione"); echo array_search(1 , array_count_values($a)); Saída: Destaque Acho que isso te ajuda. Compartilhar este post Link para o post Compartilhar em outros sites
pinoc 2 Denunciar post Postado Setembro 3, 2012 Opa me confundi nos Grabriel mesmo HAHA. So que meu problema é mais complicado. Pois esse valor que precisa ficar ele vai ser passado pelo form direto para uma array da seguinte forma. UMA PARTE DO FORM <div class="local" id="localhome"> <label>Home:</label> <select name="localpagina[]" class="list"> <option>Selecione</option> <option>Destaque</option> <option>Texto Principal</option> </select> </div> <div class="local" id="localempresa"> <label>Empresa:</label> <select name="localpagina[]" class="list"> <option>Selecione</option> <option>Texto de explicação</option> </select> </div> Veja que os dois Listboxes estão iguais name localpagina[] ja criando uma array e enviando para outra pagina $local = implode( ' ', $_POST['localpagina']); Diminui o codigo para explicar melhor Gerando o array, so que recebendo esse valor ficaria Destaque, Selecione caso o lisboxes home seja coloca em destaque, mais se caso o listboxes empresa seja mudado para texto de explicação o home ficaria como selecione sendo que a array mudaria para Selecione, Texto de explicacao Deu pra entender porque to quebrando a cabeça? Compartilhar este post Link para o post Compartilhar em outros sites
Gabriel Heming 766 Denunciar post Postado Setembro 3, 2012 Deu pra entender porque to quebrando a cabeça? Não, não deu. Acho que você está complicando demais um pequeno problema. Teoricamente, basta você substituir o que eu passei de exemplo, por isso daqui: echo array_search(1 , array_count_values($_POST['localpagina'])); Teste, e veja o que acontece. Esse código deve apenas, retornar um valor. Se isso não for o que você quer, sua explicação que possui algum problema. Compartilhar este post Link para o post Compartilhar em outros sites
pinoc 2 Denunciar post Postado Setembro 3, 2012 Não, não deu. Acho que você está complicando demais um pequeno problema. Teoricamente, basta você substituir o que eu passei de exemplo, por isso daqui: echo array_search(1 , array_count_values($_POST['localpagina'])); Teste, e veja o que acontece. Esse código deve apenas, retornar um valor. Se isso não for o que você quer, sua explicação que possui algum problema. Gabriel Heming É verdade estava transformando um negocio simples em uma coisa complicada. Funciono da forma que você falo esta exibindo apenas oque eu quero. Muito obrigado e desculpa a ignorancia. HEHE Compartilhar este post Link para o post Compartilhar em outros sites
Kakashi_Hatake 267 Denunciar post Postado Setembro 3, 2012 @Gabriel Heming Vamos supor que ele receba um array no qual não se sabe o número de vezes em que "Destaque" e "Selecione" se repete, como esse: $a = array("Selecione" , "Selecione" ,"Destaque", "Selecione" ,"Destaque", "Selecione"); var_dump( array_search(1 , array_count_values($a)) ); // bool(false) Temos que tornar este script mais dinâmico para evitar este tipo de problema. :thumbsup: <?php // criando o array $array = array( 'Selecione', 'Destaque' ); for( $i = 0; $i < 20; $i++ ) { // povoando o array $array[ ] = $array[ rand( 0, 1 ) ]; } // filtragem $needle = 'Destaque'; $result = array_unique( $array ); $search = array_search( $needle, $result ); if( $search ) { echo $result[ $search ]; } else { echo 'index does not exist!'; } ?> Compartilhar este post Link para o post Compartilhar em outros sites
Gabriel Heming 766 Denunciar post Postado Setembro 3, 2012 @Carlos Coelho - O valor que deve permanecer é único e nunca se repetirá? O valor que deve permanecer é unico porem vai ser alterado, dependendo doque for selecionado no LISTBOXES do form, sendo que esse valor que precisa ficar nem sempre ficara em primeiro lugar ou segundo da array, entende!?. - Todos os "demais" valores serão selecione? Sim apenas um valor sera diferente o restante sempre sera selecione. Com essa resposta, não precisei me preocupar com dinamismo de quantidade. :thumbsup: Compartilhar este post Link para o post Compartilhar em outros sites
Kakashi_Hatake 267 Denunciar post Postado Setembro 3, 2012 Verdade caro colega :closedeyes: Fui muito além do que era necessário, mas fica a dica :thumbsup: Compartilhar este post Link para o post Compartilhar em outros sites