Ir para o conteúdo
pemoamsi

Return de array

Mensagens Recomendadas

pemoamsi

Boa tarde,

mais uma vez estou a precisar do vosso apoio para perceber melhor sobre como retornar um array numa função.

Tenho uma função, em que o resultado me é dado pelo seguinte ciclo:

for ($i=0;$i<$attrs["count"];$i++)     {echo $attrs[$i]." = " . $i . $attrs[$attrs[$i]][0] ;}

Como é que eu posso fazer return desses dados? Fazendo um serialize? :S

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
HappyHippyHippo

antes do mais, esse ciclo não produz nada a não ser output, logo não faz qualquer tipo de significado para uma questão de "como retornar uma array"

a maneira de como retornar um array numa função é exactamente a mesma coisa como retornar um inteiro ou uma string.

fazes simplesmente a chamada da palavra reservada "return" seguida da variável que guarda o array que pretendes retornar


IRC : sim, é algo que ainda existe >> #p@p

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
pemoamsi

antes do mais, esse ciclo não produz nada a não ser output, logo não faz qualquer tipo de significado para uma questão de "como retornar uma array"

a maneira de como retornar um array numa função é exactamente a mesma coisa como retornar um inteiro ou uma string.

fazes simplesmente a chamada da palavra reservada "return" seguida da variável que guarda o array que pretendes retornar

ok, então chamos a função na pagina index.php e depois o array

$attrs= array_func()
for ($i=0;$i<$attrs["count"];$i++)	 {echo $attrs[$i]." = " . $i . $attrs[$attrs[$i]][0] ;}

E na página de funcões faço apenas o

return $attrs;

Está-me aqui a falhar alguma coisa...

Editado por Rui Carlos
Corrigida formatação.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
oxyzero


function array_func() {
  for ($i=0;$i<$attrs["count"];$i++)       {echo $attrs[$i]." = " . $i . $attrs[$attrs[$i]][0] ;}

   return $attrs;

}

$attrs = array();
$attrs = array_func();

É isto que tens mais ou menos? Se sim, o que é o $attrs dentro da função, de onde é que ele tem os valores, o $attrs["count"] existe?

E o que é que tens como resultado dos echo's?

Fazer return de um array é exatamente como já disseram, é tal e qual como um integer/string. -> return $array;

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
pemoamsi


function array_func() {
  for ($i=0;$i<$attrs["count"];$i++)	   {echo $attrs[$i]." = " . $i . $attrs[$attrs[$i]][0] ;}

return $attrs;

}

$attrs = array();
$attrs = array_func();

É isto que tens mais ou menos? Se sim, o que é o $attrs dentro da função, de onde é que ele tem os valores, o $attrs["count"] existe?

E o que é que tens como resultado dos echo's?

Fazer return de um array é exatamente como já disseram, é tal e qual como um integer/string. -> return $array;

Vamos lá explicar melhor e tudo para ver se eu percebo o que me estão a tentar responder.

Eu tinha uma função para me retornar válido ou inválido um dado, e até aqui funcionava tudo bem:

return - "válido ou inválido"

function funcao_validar($pergunta,$resposta,$valor)
{
if(....){ return "Correcto";}
else{ return "Errado";}
}
$message = funcao_validar('pergunta','resposta','valor');
echo $message;

Até aqui tudo bem,

Mas o que eu queria mesmo era construir agora uma página de "soluções", e como as respostas estão guardadas num array estava a fazer o seguinte:

function funcao_solucoes()
{
if(....){ return $attrs;}
else{ return "Não autorizado";}
}
$attrs = funcao_solucoes();
for ($i=0;$i<$attrs["count"];$i++)	   {echo $attrs[$i]." = " . $i . $attrs[$attrs[$i]][0] ;}

Mas agora até estava a pensar que se calhar o melhor era serializar o array... mas está complicado :\

Editado por pemoamsi

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
HappyHippyHippo

antes de mais, tenta esquecer essa ideia de "serializar" porque essa operação existe e não tem nada haver com o que pretendes (pelo menos pelas poucas explicações que apresentas do pretendido)

segundo, qual o problema no código que apresentaste acima ?


IRC : sim, é algo que ainda existe >> #p@p

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
pemoamsi

Obrigado pela ajuda, já consegui, embora não perceba muito bem qual foi o problema. Às vezes o melhor é apagar e começar novamente, foi o que fiz e funcionou perfeitamente. Devia ser algum erro intermédio que nada tinha a ver com o que eu pensei.

Peço desculpa pelo tempo que vos tirei.

Mais uma vez...obrigado

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
pemoamsi

Como esta questão tem algo a ver com a anterior, queria acrescentar o seguinte:

Agora tenho os valores de uma matriz, ou seja, na posição da coluna 2 e linha 4 o nome é Zé...

$matriz[2][4] = 'Zé';

É possível correr os valores da coluna e da linha? Queria por exemplo retirar todos os valores onde a linha e a coluna são iguais e embora pesquise não estou a ver como...

$maxID = 500;
for ($i = 1; $i <= $maxID; $i++)
{
   for ($j = 1; $j <= $maxID; $j++)
   {
    if (($i == $j) && ($teste[$i][$j] != ""))
    {
	 $insert[$maxID][$maxID] = $teste[$i][$j]; //copia o valor do array em que os valores das colunas e das linhas são iguais para um novo array
	 $maxID++;
    }
 }
}

Qual é o meu problema? É que neste exemplo estou a copiar o valor sempre que a coluna é igual à linha, mas o que eu queria mesmo era copiar toda a linha da matriz.

Ou seja, a partir daqui queria ser capaz de correr todos os valores de j (excepto o valor de j = i porque já foi imprimido) e copiar para o $insert[][] em que o $i será sempre o $maxID e o $j será $maxID+1, maxID+2.....

Alguém me dá uma dica?

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
pemoamsi

Tenho a seguinte matriz:

Nas colunas funcionam como ID's, dai que só exista referência numa linha por coluna.

O que eu tenho é que ele percorre todos os ID's, e quando encontra um ID Titulo (que é sempre o valor da coluna igual ao da linha), carregua esses valores num array na forma $teste[1][1] = Titulo 1, $teste[1][4] = Subtitulo 1.1 ...

O que eu preciso é que ele agora me veja qual o ultimo valor da coluna ($maxID) e guarde num novo array (por ex: caso o $maxID = 500 ele criar o array $insert[500][500] = Titulo 1, $insert[500][501] = Subtitulo 1.1...) para eu depois poder fazer um insert desses valores na base de dados e ficar assim:

Editado por pemoamsi

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
pemoamsi

Tenho a seguinte matriz:

Nas colunas funcionam como ID's, dai que só exista referência numa linha por coluna.

O que eu tenho é que ele percorre todos os ID's, e quando encontra um ID Titulo (que é sempre o valor da coluna igual ao da linha), carregua esses valores num array na forma $teste[1][1] = Titulo 1, $teste[1][4] = Subtitulo 1.1 ...

O que eu preciso é que ele agora me veja qual o ultimo valor da coluna ($maxID) e guarde num novo array (por ex: caso o $maxID = 500 ele criar o array $insert[500][500] = Titulo 1, $insert[500][501] = Subtitulo 1.1...) para eu depois poder fazer um insert desses valores na base de dados e ficar assim:

Já percebi que as imagens não funcionaram, mas também já percebi como resolver. O meu problemas estava basicamente em não conseguir visualizar, e só o facto de tentar explicar melhor, ajudou;) Por isso obrigado Hippo

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.