Jump to content

Recommended Posts

Posted

olá estou com um problema ao qual não consigo arranjar solução!

Tenho este código que recebe os valores de modo serialize por via jquery para esta página php.

Recebe todos os dados do form por POST e estou a correr todos os dados do formulário e a inserir eles num array. O problema é que me insere em arrays separado. O meu objectivo era simplesmente ter os dados num só array ou pelo menos correr todos os $_POST['nome'][0]; $_POST['nome'][1]; $_POST['nome'][2]; ou seja lá quantos forem selecionados anteriormente e vereficar se um nome deles se repete dá erro. Seja o $_POST['nome'][1]; com o $_POST['nome'][5]; Não poderão haver nomes iguais.

O meu problema é que ele corre o valor neste for nome por nome de modo injectivo e eu não consigo fazer verificação se o anterior ou seguinte são iguais para então dar resposta erro.



for($a=0;$a<sizeof($_POST['nome']);$a++)
{


         $arr = array( "nome" => $_POST['nome'][$a], "id" => $_POST['id'][$a], "gramas" => $_POST['gramas'][$a] );


}

Se alguem tiver disponibilidade para me ajudar, agradecia. Cumprimentos.

Posted

a maneira mais simples é :

1º - criar uma array dos elementos a tratar de uma forma mais "estruturada" (não obrigatório)

2º - ordenar o array

3º - comparar os elementos adjacentes

$res = array();
$repetido = false;

// agrupar a informação (não obrigatório mas sempre ajuda mais tarde a tratar a informação)
foreach ($_POST['nome'] as $i => $v) {
 $res[] = array('nome' => $_POST['nome'][$i],
                'id' => $_POST['id'][$i],
                'gramas' => $_POST['gramas'][$i]);
}

// ordenar a informação
usort($res, function($a, $b) {
   if ($a['nome'] == $b['nome'])
       return 0;
   return ($a['nome'] < $b['nome']) ? -1 : 1;
});

// verificar existência de repetidos (estão obrigatoriamente juntos)
for ($i = 1; $i < count($res) && !$repetido; $i++) {
 if ($res[$i]['nome'] == $res[$i - 1]['nome'])
   $repetido = true;
}
IRC : sim, é algo que ainda existe >> #p@p

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.