Array multidimensional (soma das posições)

668 views
Skip to first unread message

Jansen

unread,
Aug 31, 2011, 9:49:24 AM8/31/11
to LISTA PHP
Ola pessoal

Eu tenho um array multidimensional e gostaria de somar as posicões que
são iguais mas sem ter de usar um loop para isso.

por exemplo a posicao [1][1] com a posicao [2][1] e a posicao [3][1] e
por ai vai.

Será que não tem alguma funcão no php que eu possa fazer isso?

Estou tentando economizar memória pois é um filtro cheio de loops e já
está pra la de pesado.

abraço a todos.

Segue abaixo o array:

Array
(
[1] => Array
(
[1] => 500
[2] => 220
[3] => 0
[4] => 0
[5] => 0
[6] => 0
[7] => 0
[8] => 0
[9] => 0
[10] => 45
[11] => 0
[12] => 921.44
[13] => 0
[14] => 200
[15] => 0
[16] => 0
[17] => 0
[18] => 0
[19] => 0
[20] => 0
)

[2] => Array
(
[1] => 0
[2] => 0
[3] => 0
[4] => 0
[5] => 0
[6] => 0
[7] => 0
[8] => 0
[9] => 0
[10] => 0
[11] => 0
[12] => 0
[13] => 0
[14] => 0
[15] => 0
[16] => 0
[17] => 0
[18] => 0
[19] => 0
[20] => 0
)

[3] => Array
(
[1] => 0
[2] => 0
[3] => 0
[4] => 0
[5] => 0
[6] => 0
[7] => 0
[8] => 0
[9] => 0
[10] => 0
[11] => 0
[12] => 0
[13] => 0
[14] => 0
[15] => 0
[16] => 0
[17] => 0
[18] => 0
[19] => 0
[20] => 0
)

[4] => Array
(
[1] => 0
[2] => 0
[3] => 0
[4] => 0
[5] => 0
[6] => 0
[7] => 0
[8] => 0
[9] => 0
[10] => 40
[11] => 0
[12] => 0
[13] => 0
[14] => 0
[15] => 0
[16] => 0
[17] => 0
[18] => 0
[19] => 0
[20] => 0
)

[5] => Array
(
[1] => 0
[2] => 0
[3] => 0
[4] => 0
[5] => 0
[6] => 0
[7] => 0
[8] => 0
[9] => 0
[10] => 0
[11] => 0
[12] => 0
[13] => 0
[14] => 0
[15] => 0
[16] => 0
[17] => 0
[18] => 0
[19] => 0
[20] => 0
)

[6] => Array
(
[1] => 0
[2] => 0
[3] => 0
[4] => 0
[5] => 0
[6] => 0
[7] => 0
[8] => 0
[9] => 0
[10] => 0
[11] => 0
[12] => 0
[13] => 0
[14] => 0
[15] => 0
[16] => 0
[17] => 0
[18] => 0
[19] => 0
[20] => 0
)

[7] => Array
(
[1] => 0
[2] => 0
[3] => 0
[4] => 0
[5] => 0
[6] => 0
[7] => 0
[8] => 0
[9] => 0
[10] => 0
[11] => 0
[12] => 0
[13] => 0
[14] => 0
[15] => 0
[16] => 0
[17] => 0
[18] => 0
[19] => 0
[20] => 0
)

[8] => Array
(
[1] => 0
[2] => 0
[3] => 0
[4] => 0
[5] => 0
[6] => 0
[7] => 0
[8] => 0
[9] => 0
[10] => 0
[11] => 0
[12] => 0
[13] => 0
[14] => 0
[15] => 0
[16] => 0
[17] => 0
[18] => 0
[19] => 0
[20] => 0
)

[9] => Array
(
[1] => 0
[2] => 0
[3] => 0
[4] => 0
[5] => 0
[6] => 0
[7] => 0
[8] => 0
[9] => 0
[10] => 0
[11] => 0
[12] => 0
[13] => 0
[14] => 0
[15] => 0
[16] => 0
[17] => 0
[18] => 0
[19] => 0
[20] => 0
)

[10] => Array
(
[1] => 0
[2] => 0
[3] => 0
[4] => 0
[5] => 0
[6] => 0
[7] => 0
[8] => 0
[9] => 0
[10] => 0
[11] => 0
[12] => 0
[13] => 0
[14] => 0
[15] => 0
[16] => 0
[17] => 0
[18] => 0
[19] => 0
[20] => 0
)

)

Leandro Leite

unread,
Aug 31, 2011, 9:56:42 AM8/31/11
to list...@googlegroups.com
cara, se você ja tem um array multidimensional um contador em um loop não vai consumir tanta memoria assim!

faça um loop e não use ternário quando estiver trabalhando com array pois ternário não trabalha muito bem com arrays ele chega a ser 32 mil vezes mais lento que um if normal quando trabalhando com array

boa sorte!!!

Atenciosamente,

Leandro Leite Pinto de Oliveira

http://about.me/lleitep3

http://lleitep3.com

 Web Dev





--
============================================================
LEIAM SEMPRE AS REGRAS DA LISTA:
http://groups.google.com.br/group/listaphp/web/regras-da-lista-php
--
JQUERY MAGAZINE > http://www.jquerymagazine.com.br
--
PHP MAGAZINE > http://www.phpmagazine.com.br
--
LISTA NODE.JS > https://groups.google.com/group/lista-nodejs?hl=pt-br
--
AJAX-BRASIL > http://groups.google.com/group/ajax-brasil
--
PYTHON-GOOGLE > http://groups.google.com.br/group/python-google
--
DOTNET-BRASIL > http://groups.google.com.br/group/dotnet_br
============================================================

Rogerio Morales

unread,
Aug 31, 2011, 10:11:26 AM8/31/11
to list...@googlegroups.com
testa isso, vai te trazer um array com as somas de cada posicao, se eu entendi bem....

for ($i=0; $i < sizeof($array); $i++) {
    for($j=0; $j < sizeof($array[$i]; $j++) {
        $total[$j] += $array[$i][$j];
    }
}

Em 31/08/11 10:56, Leandro Leite escreveu:
--

Rogerio Pellarin

Suporte Técnico / Vendas

 

Email:

linux....@terra.com.br

Mobile:

+55 18 9198 6861

Phone:

+55 18 3642 4941

Skype:

pellarin.rogerio

Gtalk

tril...@gmail.com

Msn:

tril...@gmail.com

 

TORPEDO CERTO - O Melhor Disparo SMS

          www.torpedocerto.com.br

Bernardo Vieira

unread,
Aug 31, 2011, 9:57:31 AM8/31/11
to list...@googlegroups.com
Sem loop não dá, né? Você pode até usar map[1]/reduce[2] para fazer isso mas só vai trocar looping explícito por implícito.

[1] http://php.net/manual/en/function.array-map.php
[2] http://php.net/manual/en/function.array-reduce.php


2011/8/31 Jansen <jansen...@gmail.com>
Reply all
Reply to author
Forward
0 new messages