Jump to content
Sign in to follow this  
pemoamsi

Return de array

Recommended Posts

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

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other 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...

Edited by Rui Carlos
Corrigida formatação.

Share this post


Link to post
Share on other 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;

Share this post


Link to post
Share on other 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 :\

Edited by pemoamsi

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other 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?

Share this post


Link to post
Share on other 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:

Edited by pemoamsi

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other sites

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
Sign in to follow this  

×
×
  • 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.