Ir para conteúdo

POWERED BY:

Arquivado

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

mvspereiraz

Somar arrays

Recommended Posts

Meu povo eu tenho um foreach que a cada volta recebe um array de um método da uma classe x eu preciso somar todos esses arrays que recebo em cada volta do foreach mas não estou conseguindo fazer isso

 

abaixo vai meu código

$array2 = array();

foreach ($cont as $key => $value) {
        // recebe um array vindo do método
	$var[$key] = $classe->Método($cont[$key]);
	
        $array[$key] = $var[$key];
	
	$res = array_merge($array[$key], $array2);
}

print_r($res);

O problema que no final quando printo a $res ele me mostra apenas o que seria o ultimo array.. ele não soma..

Compartilhar este post


Link para o post
Compartilhar em outros sites

qual o motivo de mesclar $array2 que é um array vazio dentro do laço de repetição com uma chave de um vetor que está recebendo a chave de outro vetor que recebe o retorno do objeto provindo de uma chave de outro vetor ?

 

está bastante redundante e sem sentido..

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pois é, pelo que deu pra ver você pode reduzir esse código, a parte do laço, a simplesmente:

 

 

$res[] = $classe -> Método( $cont[ $key ] );

 

Isso está me cheirando à um pseudo-dispatcher de controller que se utiliza de call_user_func_array() que quando o callable informado não é o nome de uma função, busca por array de dois índices com o objeto e o nome do método.

 

Só um palpite, mas como está mesclando com um array vazio, vai ter um erro em tempo de execução de todo jeito.

Compartilhar este post


Link para o post
Compartilhar em outros sites

ué.. então só fazer isso:

foreach ($cont as $key => $value) {
    $res[] = $classe->Método($value);
}

print_r($res);

 

 

e mais um detalhe.. o que tem a ver o título do tópico ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Especular é sempre complicado... Título errado, código mal escrito, falta de informações (o que tem em $cont, por exemplo)...

 

Só podemos ficar atirando no escuro, uma hora dá certo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

ok... ele está me retornando um unico array como eu gostaria.. porém está multidimensional

Array
(
    [0] => Array
        (
            [0] => Array
                (
                    [a] => 1
                    [b] => 2
                    [c] => 3
                )

        )

    [1] => Array
        (
            [0] => Array
                (
                    [a] => 1
                    [b] => 2
                    [c] => 3
                )

        )

    [2] => Array
        (
            [0] => Array
                (
                    [a] => 1
                    [b] => 2
                    [c] => 3
                )

        )

    [3] => Array
        (
            [0] => Array
                (
                    [a] => 1
                    [b] => 2
                    [c] => 3
                )

        )

)

 

Preciso que ele fique tipo assim.. Alguém sabe como??

Array
(
            [0] => Array
                (
                    [a] => 1
                    [b] => 2
                    [c] => 3
                )

            [1] => Array
                (
                    [a] => 1
                    [b] => 2
                    [c] => 3
                )

            [2] => Array
                (
                    [a] => 1
                    [b] => 2
                    [c] => 3
                )

            [3] => Array
                (
                    [a] => 1
                    [b] => 2
                    [c] => 3
                )

            [4] => Array
                (
                    [a] => 1
                    [b] => 2
                    [c] => 3
                )

            [5] => Array
                (
                    [a] => 1
                    [b] => 2
                    [c] => 3
                )

)

Compartilhar este post


Link para o post
Compartilhar em outros sites

E quem, ou melhor, como esse array est[a sendo gerado De repente, por consertar o trecho que gera esse array, você dispensa outro loop.

Compartilhar este post


Link para o post
Compartilhar em outros sites

se a consulta já retorna uma array, então por que está fazendo loop e jogando dentro de outro array?

 

acho que o que deve mudar agora é a forma como o objeto retorna os dados do bacnco de dados... isso já resolveria.

 

 

outra coisa que seria bom é começar a usa a massa cinzenta.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então esse array é gerado por uma consulta no banco de dados..

 

Porém, as vezes, a forma como você lê o recurso e popula o array está errada.

 

Ajude-nos a te ajudar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não deveria ser...?

 

$array2 = array_merge($array[$key], $array2);

 

...e print_r no [inline]$array2[/inline]...?

 

 

(Obs.: estou apenas chutando, não faço a mínima ideia do que você está tentando fazer...)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Seguinte... ao colegas que não tem paciência para ensinar gostaria de lembrar que isso é um fórum de ajuda e se certa pessoa abre um tópico de ajuda deve ser por que ela está enfrentando dificuldades para resolver algum problema. Agora se não tem paciência para ensinar ou ajudar está no lugar errado.. evite perder seu tempo e o meu com comentários desnecessários e se atente a duvida de outra forma não atrapalhe..

 

 

Então Bruno Augusto.. o problema é o seguinte em cada loop do foreach eu faço uma consulta diferente que me retorna resultados diferentes por isso a necessidade de colocar todos os arrays retornados em cada volta do foreach em um array principal.. e estou usando array pq estou usando o smarty pra exibir as informações porém como array é multidimensional está dificultando a exibição na tela pelo smarty.. caso tenha alguma outra sugestão de como fazer isso estou aberto a opções =D Espero q tenha entendido e desculpe minha dificuldade em explicar o problema..

Compartilhar este post


Link para o post
Compartilhar em outros sites

Beleza, cara você até forneceu mais informações pra gente, mas ainda assim, seu vermos o seu código atual, o que consulta o banco ~e do recurso são extraídas as informações, fica difícil de ajudar.

 

De repente, tudo pode se resolver por deixar de usar um para de colchetes que esteja a mais, criando as dimensões indevidas.

 

Ou ainda, você pode modificar sua query para que ela retorne mais informações de uma só vez, ficando apenas alguns detalhes para serem ajustados com o PHP.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vou te mostrar o norte e espero que você caminhe sozinho.

 

Você consegue enxergar algo que sempre se repete nessa sua estrutura?

Compartilhar este post


Link para o post
Compartilhar em outros sites

#13

Que gracinha.. tem que ensinar fazendo mimo.. bilubilu.. fofura da mamãe.

 

Se vc postou em público está sujeito a comentários públicos também.

Se você queria ler somente o que gosta, que fizesse isso em particular.

Ninguém aqui é obrigado a ensinar nada pois esse não é o conceito do forum.

 

O seu comentário medíocre te matou possibilidades de ajuda mais prática, pois eu e talvez outros estavam dispostos a mostrar em códigos.. Só estava dependendo do que vc responderia.

 

[mimimi]

 

 

Programação é lógica. Se vc não tem raciocínio lógico, esqueça essa área.

Isso é independente de vc ser iniciante ou não.

Para vc ter idéia do absurdo que é a sua dificuldade com esse script, é o mesmo que entrar numa faculdade sem saber operações básicas da matemática (adição, subtração, divisão, multiplicação).

 

Para resolver o seu problema, alguém terá que praticamente fazer parte de seu trabalho, analisando o seu script, lhe fazendo perguntas, procurar entender o que está fazendo, etc.. Tudo isso custa tempo, é trabalho. Quem for bobo fará o seu trabalho de graça. Mesmo para ensinar dá trabalho e gera custos.

 

 

 

 

class Foo{
	public static function Bar( $n ){
		$arr[0] = array(1,2,3);
		$arr[1] = array(1,2,3);
		$arr[2] = array(1,2,3);
		return $arr[$n];
	}
}

$arr = array(
	0 => 0,
	1 => 1,
	2 => 2,
);

foreach($arr as $v){
    $rs[] = Foo::Bar($v);
}

print_r($rs);

Compartilhar este post


Link para o post
Compartilhar em outros sites

#13

Que gracinha.. tem que ensinar fazendo mimo.. bilubilu.. fofura da mamãe.

boa!

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.