Colocar Resposta 
 
Avaliação do Tópico:
  • 0 votos - 0 Média
  • 1
  • 2
  • 3
  • 4
  • 5
[PHP] Arrays dentro de Arrays
23-04-2014, 19:48
Mensagem: #1
[PHP] Arrays dentro de Arrays
Boas, gostaria de saber se é possível obter um determinado valor que se encontra dentro de um array ($array[0] = $valor) que, por sua vez se encontra dentro de um array multi-dimensional. Isto, sem ter que colocar ciclos dentro de ciclos, o que limita a quantidade de informação que posso passar, no meu caso.

Exemplo:
Código:
<?php
$valor = "teste";
$array = array(
    array(
        array($valor)
    )
);
?>

Para obter o $valor, pelo que sei, seriam 3 ciclos (foreach, é o mais fácil para mim, por exemplo) uns dentros dos outros para percorrer todo o array multi-dimensional. Porém, para isso, temos ou que saber a quantidade de dimensões que o array terá, ou teremos que o prever, por exemplo: 
Código:
if(gettype($array)=='array'){
    // iniciar ciclo
}else // Receber valor

O porque de eu perguntar isto, é pelo facto de que percorrer um array dissociativo, acaba por ser ciclos atrás de ciclos, o que se torna repetitivo...

Thanks Smile (tentei explicar o melhor possível xD)
Procurar todas as mensagens deste utilizador
Citar esta mensagem numa resposta
23-04-2014, 23:48
Mensagem: #2
RE: [PHP] Arrays dentro de Arrays
Não sei se isto ajuda, nem se percebi bem o problema mas dá uma olhadela.
http://php.net/manual/en/function.array-...ursive.php
Visitar Website de este utilizador Procurar todas as mensagens deste utilizador
Citar esta mensagem numa resposta
24-04-2014, 14:17 (Esta mensagem foi modificada pela última vez a: 24-04-2014 14:22 por dininis.)
Mensagem: #3
RE: [PHP] Arrays dentro de Arrays
é exatamente isso (se bem que tem algumas limitações para outras situações, mas para o meu caso está ótimo!)
Teoricamente, não há qualquer problema, é uma questão de simplificar o código. Agora em vez de
Código:
foreach($array as $i1 => $a){
     foreach($a as $i2 => $b){
          foreach($b as $i3 => $c){
               if($c==$Conteudo) print "Existente";
          }
     }
}
passo a ter:
Código:
function CheckIfExists($item,$key){
     if($key==1 && $item==$Conteudo) print Existente
}
array_walk_recursive($array, 'CheckIfExists');
E, com isso, que é o motivo pelo qual pedi tal função, basta chamar essa função para obter o tal $Conteudo, em vez de, cada vez que precise dele, iniciar aquela rede específica de ciclos que falei no primeiro post Smile

As limitações disto seria, apenas, se utilizasse strings como index do array, ou então se fizesse algo como
Código:
$array[0] = "valor0";
$array[1][0] = "valor1_0";
Presumo que se a função fosse imprimir todos os valores do array, este dar-me-ia algo como:
Código:
0 -> "valor0"
0 -> "valor1_0"
Ou seja, com esse método não teria como saber de onde vem o valor1_0 sem que introduza essa informação na própria string (e fazer um split() para as virgulas, por exemplo).
PORÉM, não percebi para que serve o terceiro parâmetro dessa função (mixed $userdata)... Seria para isso? Não encontro nada sobre essa coisa estranha xD

Anyways, thanks a lot Big Grin
Por acaso não esperava que houvesse, devido à forma como estava a imaginar como seria feito Tongue
Procurar todas as mensagens deste utilizador
Citar esta mensagem numa resposta
24-04-2014, 14:55 (Esta mensagem foi modificada pela última vez a: 24-04-2014 14:58 por eSkiSo.)
Mensagem: #4
RE: [PHP] Arrays dentro de Arrays
Esse ultimo parâmetro serve para enviares um terceiro parametro para a função que chamas, do tipo:


Código:
array_walk_recursive($array, 'CheckIfExists');
function CheckIfExists($item,$key)


passa a ser


Código:
array_walk_recursive($array, 'CheckIfExists', $outros_parametros);
function CheckIfExists($item,$key,$outros_parametros)
Visitar Website de este utilizador Procurar todas as mensagens deste utilizador
Citar esta mensagem numa resposta
24-04-2014, 18:35
Mensagem: #5
RE: [PHP] Arrays dentro de Arrays
esse $outros_parametros nada tem a ver com o $array em si, sendo só mesmo para caso necessite de mais variaveis dentro da respetiva função. Percebi bem? Tongue
thanks
Procurar todas as mensagens deste utilizador
Citar esta mensagem numa resposta
24-04-2014, 22:29
Mensagem: #6
RE: [PHP] Arrays dentro de Arrays
Yep, exactamente 
Visitar Website de este utilizador Procurar todas as mensagens deste utilizador
Citar esta mensagem numa resposta
Colocar Resposta 


Saltar Fórum:


Utilizadores a ver este tópico: 1 Visitante(s)