Ir para conteúdo

POWERED BY:

Arquivado

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

dougbrag

array_fill_keys

Recommended Posts

Bom dia pessoal!

 

Estou começando a usar a função array_fill_keys do php.

 

Teoricamente o código abaixo deveria funcionar, correto?

 

 

while( $regGrupo = mysql_fetch_array($res) ){
$key=$regGrupo[grupo];
$totGrupo = array_fill_keys($key, $regGrupo[valor]);
}
O que pode estar errado?
Abraços!

Compartilhar este post


Link para o post
Compartilhar em outros sites

oq vc quer fazer com esse codigo? qual seria o objetivo?

funcionar é uma coisa, a tua expectativa é outra. nem sempre esses dois estão juntos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

$key é um array? 99% de certeza que não, já que está dentro de um loop, este é o valor corrente vindo da busca (fetch) feito(a).

 

O que você está querendo realmente fazer?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pessoal, obrigado pelo interesse em me ajudar.

 

Vou tentar explicar da forma mais clara o que estou tentando.

 

Essa consulta que faço no banco trás registros que pertencem a um mesmo grupo de classificação e para tanto existe um campo que identifica tal grupo. Até então trabalhar com os valores de cada registro separadamente estava tranquilo, agora estou precisando juntar/somar os valores de cada grupo e armazenar num array para posteriormente mostrar estes valores.

 

Ai o que pensei:

 

Crio um array que tenha como índice o valor do campo que identifica o grupo e no value o valor correspondente ao registro daquele grupo, depois disto feito vou ter apenas que somar os valores para totaliza-los.

 

Pessoal, sou iniciante, mas bastante esforçado.

 

Se houver alguma maneira de fazer melhor agradeço as sugestões.

 

Abraços!

Compartilhar este post


Link para o post
Compartilhar em outros sites

tentei testar um exeplo parecido com o seu ai vai, veja se o array de entrada é igual ao seu, e o de saida o desejado.

 

 

$grupos = array();
$lista = array(0 => array('grupo' => 'adm', 'user' => 'mario'),
               1 => array('grupo' => 'usr', 'user' => 'joao'),
               2 => array('grupo' => 'adm', 'user' => 'maria'),
               3 => array('grupo' => 'user', 'user' => 'jose')
         );

echo "<pre>";
print_r($lista);

foreach ($lista as $item){
    $grupos[$item['grupo']][] = $item['user'];
}

echo "<pre>";
print_r($grupos);
 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa noite shini!

 

Acabei resolvendo a situação de outra maneira, mas a sua ajuda foi de grande valia, me fez pensar fora da caixa. :)

 

Valew pela ajuda!

 

Resolvi assim:

 

//Monta estrutura de arrays para somatório de grupos

        
                $contArray=0;

                while ($regGrupo = mysql_fetch_array($res)){
                        
                    $lista[$contArray] = array($regGrupo[grupo] => $regGrupo[valor]);
                    $verTipo[$contArray] = array($regGrupo[grupo] => $regGrupo[categoria]);
                                       
                    $contArray++;
                     
                    }
                    
                    //Abre os arrays criados e unifica os registros do mesmo grupo
                    
                    $idChave='Default';
                                                         
                    foreach($verTipo as $verKey => $verIdent){
                                              
                        foreach ($verIdent as $verChave => $verValor) {
                        
                         }
                         
                            if($idChave!=$verChave){
                                                           
                                $tipoOpChave=$verChave;
                                $tipoOpValor=$verValor;
                                                         
                                $arrayVerTipo[$tipoOpChave]=$tipoOpValor;                             
                    }
                         $idChave = $verChave;
                    }
                                     
                    $idChave='Default';
                                                            
                    foreach($lista as $key => $ident){
                                              
                        foreach ($ident as $chave => $valor) {
                        
                         }
                       
                            if($idChave!=$chave){
                                                           
                                $subGrupo=$valor;
                                $totalGrupo=$valor;
                                
                            }else{
                                $subGrupo=$valor;                            
                                $totalGrupo=$totalGrupo+$subGrupo;
                            
                            }
                            
                            $arrayTotal[$chave]=array($chave => $totalGrupo);
                                           
                            $idChave = $chave;
                                                         
                }
                
                //Abre os arrays para montagem de gráfico condicionando para valor positivo ou negativo

                foreach ($arrayVerTipo as $keyTipo => $tipoValor){
                    foreach ($arrayTotal as $grafChave => $passaTotal){
                        if ($grafChave === $keyTipo){
                        foreach($passaTotal as $grafTotal){                            
                            if($tipoValor === "Despesa"){
                            $tipoDespesa=$dataSet->addPoint(new Point("".utf8_decode($grafChave)." (-".number_format($grafTotal,2,",",".").")", $grafTotal));
                            }else{
                            $tipoReceita=$dataSet->addPoint(new Point("".utf8_decode($grafChave)." (".number_format($grafTotal,2,",",".").")", $grafTotal)); 
                          }}}        
                
                }}

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.