Ir para conteúdo

POWERED BY:

Arquivado

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

dinhotaswolf

Como identificar um array dentro de outro array

Recommended Posts

Olá pessoal,

 

gostaria de saber como posso pegar o nome de um array e suas posições dentro de outro array?

 

Quando o formulário envia os dados para o código PHP, ele recebe em um array. Quando você envia dados do formulário dentro de um array esse array vem dentro do array de envio do formulários.

 

Não sei se me fiz entender, mas abaixo vou colocar um exemplo do que quero fazer:

 

 ["tipo"]=>array(2) {
   [0]=>string(9) "correia 1"
   [1]=>string(9) "correia 2"
 }
 ["comp"]=>array(2) {
   [0]=>string(2) "12"
   [1]=>string(2) "34"
 }
 ["larg"]=>array(2) {
   [0]=>string(2) "12"
   [1]=>string(2) "34"
 }
 ["acab"]=>array(2) {
   [0]=>string(6) "acab 1"
   [1]=>string(6) "acab 2"
 }
 ["qtde"]=>array(2) {
   [0]=>string(2) "12"
   [1]=>string(2) "34"
 }
 ["item"]=>array(2) {
   [0]=>string(4) "Peça"
   [1]=>string(5) "Metro"
 }

No trecho acima pode-se perceber arrays. Quero criar um código que identifique o array, capture o nome e os valores do mesmo automáticamente.

 

Fico grato por qualquer tipo de ajuda,

Compartilhar este post


Link para o post
Compartilhar em outros sites

Usa foreach para percorrer o array e a função is_array para verificar se o elemento x do array principal que você está percorrendo é um array, se for, outro foreach

 

<?php

$var['tipo'] = array('correia 1', 'correia 2');
$var['comp'] = array('12', '34');
$var['larg'] = array('12', '34');
$var['acab'] = array('acab 1', 'acab 2');
//$var[...

echo "<pre>";
print_r($var); // para visualizar como está o array
echo "</pre>";

foreach($var as $v => $vv){
   echo '<strong>'. $v .'</strong><br />';

   if(is_array($vv))
       foreach($vv as $vv2)
           echo $vv2 . '<br />';	
}

?>

:thumbsup:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Thiago Retondar!

 

Estou grato por sua atenção.

 

Mas, para funcionar eu preciso saber o nome do array, certo?

 

Existe alguma forma de identificar o nome desse array dentro do array enviado pelo formulário?

 

O código que quero criar é levando em consideração que não faço ideia do nome do array enviado. Então preciso capturar o nome do array. Pois, o nome dos campos a serem enviados serão gerados através de código e o cliente é quem vai definir seu nome.

 

Abaixo vou colocar mais dados:

 

Vamos supor que o cliente criou os campos e esta enviando para o PHP o seguinte array.

array(17) {
 ["obrigatorio"]=>string(0) ""
 ["destinatario"]=>string(24) "dinhotaswolf@hotmail.com"
 ["assunto"]=>string(22) "Formulario : respostas"
 ["campos_faltando_redirecionar"]=>string(13) "orcamento.php"
 ["redirecionar"]=>string(9) "index.php"
 ["nome"]=>string(34) "osvaldo de freitas gonçalves filho"
 ["telefone"]=>string(14) "(11) 0000-0000"
 ["email"]=>string(24) "dinhotaswolf@hotmail.com"
 ["assunto_mensagem"]=>string(9) "Orçamento"
 ["tipo"]=>array(2) {
   [0]=>string(9) "correia 1"
   [1]=>string(9) "correia 2"
 }
 ["comp"]=>array(2) {
   [0]=>string(2) "12"
   [1]=>string(2) "34"
 }
 ["larg"]=>array(2) {
   [0]=>string(2) "12"
   [1]=>string(2) "34"
 }
 ["acab"]=>array(2) {
   [0]=>string(6) "acab 1"
   [1]=>string(6) "acab 2"
 }
 ["qtde"]=>array(2) {
   [0]=>string(2) "12"
   [1]=>string(2) "34"
 }
 ["item"]=>array(2) {
   [0]=>string(4) "Peça"
   [1]=>string(5) "Metro"
 }  
 ["mensagem"]=>string(7) "asd qwe"
 ["Enviar"]=>string(6) "Enviar"
}

Até aqui tudo bem. Porém não conheço o nome de nenhum dos campos enviados.

 

O que quero é automatizar as ações abaixo:

 

$ar1 = $_POST['obrigatorio'];
$ar2 = $_POST['destinatario'];
$ar3 = $_POST['assunto'];
$ar4 = $_POST['campos_faltando_redirecionar'];
$ar5 = $_POST['redirecionar'];
$ar6 = $_POST['nome'];
       $ar7 = $_POST['telefone'];
$ar8 = $_POST['email'];
$ar9 = $_POST['assunto_mensagem'];
$ar10 = $_POST['tipo'];
$ar11 = $_POST['comp'];
$ar12 = $_POST['larg'];
       $ar13 = $_POST['acab'];
$ar14 = $_POST['qtde'];
$ar15 = $_POST['item'];
$ar16 = $_POST['mensagem'];
$ar17 = $_POST['enviar'];

ksort($ar10);
ksort($ar11);
ksort($ar12);
ksort($ar13);
ksort($ar14);
ksort($ar15);

Levando em conta que não conheço o nome dos arrays e nem quantos eles são. Ou seja, uma rotina para identificar o array e seu nome. Uma rotina para pegar os dados do array através do $_POST e aplicar o ksort nas variáveis que receberam os dados.

 

Não sei se me fiz entender, mas creio que sim.

 

Será que existe alguma forma de fazer isso?

 

Grato por qualquer tipo de ajuda.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pelo que entendi você só precisa executar o ksort não é?

 

Talvez isso resolva:

 

<?php

foreach($_POST as $chave => $valor) {
 if(is_array($valor)) {
   ksort($valor);
 }
}

 

Assim todo sub-array do array $_POST vão estar KSORTeado. ^^

 

Seria isso sua dúvida?

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.