dougbrag 0 Denunciar post Postado Março 6, 2013 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
shini 318 Denunciar post Postado Março 6, 2013 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
Bruno Augusto 417 Denunciar post Postado Março 6, 2013 $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
dougbrag 0 Denunciar post Postado Março 6, 2013 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
shini 318 Denunciar post Postado Março 6, 2013 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
dougbrag 0 Denunciar post Postado Março 7, 2013 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