Ir para conteúdo

POWERED BY:

Arquivado

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

pinoc

[Resolvido] Filtrar Array

Recommended Posts

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

É 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

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

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

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

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

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 )

 

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

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
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

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

@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

@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

×

Informação importante

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