Carlos Rocha Posted February 9, 2014 at 07:11 PM Report #544580 Posted February 9, 2014 at 07:11 PM Pessoal, como eu conseguiria ordenar o array abaixo usando foreach? $totalHorasTrabalhadas["João"]=10; $totalHorasTrabalhadas["Tamar"]=15; $totalHorasTrabalhadas["Antônio"]=10; $totalHorasTrabalhadas["Tadeu"]=15; A idéia é a seguinte: $totalHorasTrabalhadas["Antônio"]=10; $totalHorasTrabalhadas["João"]=10; $totalHorasTrabalhadas["Tadeu"]=15; $totalHorasTrabalhadas["Tamar"]=15; Como ficaria? Foreach não tem como pegar próximo índice. For os índices são textos. Não sei o que fazer!
HappyHippyHippo Posted February 9, 2014 at 07:20 PM Report #544581 Posted February 9, 2014 at 07:20 PM qual o problema da função asort ? IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
Carlos Rocha Posted February 9, 2014 at 07:56 PM Author Report #544582 Posted February 9, 2014 at 07:56 PM (edited) Por ser uma questão da Faculdade precisa ser estruturado entende? Eles não aceita o uso de funções nativas. É assim: Escreva uma função PHP chamada ordenaPorHorasTrabalhadas que recebe um array descrevendo pares [nomeDoOperario] => totalHorasTrabalhadas. Sua função deve ordenar o array por ordem crescente do número de horas trabalhadas pelos operários. A ídeia é essa: <?php $paresSapatosProduzidos = array(); $totalHorasTrabalhadas["João"]=10; $totalHorasTrabalhadas["Tamar"]=15; $totalHorasTrabalhadas["Antônio"]=10; $totalHorasTrabalhadas["Tadeu"]=15; function ordenaPorHorasTrabalhadas(&$array) { $aux =0; foreach ($array as $operario=>$valor) { //print $valor."<br>"; } ordenaPorHorasTrabalhadas($totalHorasTrabalhadas); ?> Edited February 9, 2014 at 07:56 PM by carcleo
HappyHippyHippo Posted February 9, 2014 at 07:57 PM Report #544583 Posted February 9, 2014 at 07:57 PM em todo o enunciado não vejo nada a dizer que não podes usar a função ... IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
Carlos Rocha Posted February 9, 2014 at 08:11 PM Author Report #544585 Posted February 9, 2014 at 08:11 PM (edited) "Escreva uma função PHP chamada ordenaPorHorasTrabalhadas" E não "Use a função asort() para...." Será que eu poderia usar a função asort dentro da funçao ordena.....? tipo assim: <?php ini_set('display_errors',1); ini_set('display_startup_erros',1); error_reporting(E_ALL); $totalHorasTrabalhadas= array(); $totalHorasTrabalhadas["João"]=10; $totalHorasTrabalhadas["Tamar"]=15; $totalHorasTrabalhadas["Antônio"]=10; $totalHorasTrabalhadas["Tadeu"]=15; function ordenaPorHorasTrabalhadas(&$array) { asort($array); } print "<pre>"; print_r(ordenaPorHorasTrabalhadas($totalHorasTrabalhadas)); print "</pre>"; ?> Mas não imprimiu nada Edited February 9, 2014 at 08:14 PM by carcleo
HappyHippyHippo Posted February 9, 2014 at 08:39 PM Report #544587 Posted February 9, 2014 at 08:39 PM se é um exercício específico sobre algum tipo de matéria relevante a algoritmos de ordenação é uma coisa, e então não poderás usar o asort, se não é, porque inventar a roda ? caso for o primeiro cenário, então ordenação deterás de estudar os algoritmos de ordenação, pelo menos 2 ou 3 ... IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
Devexz Posted February 9, 2014 at 09:55 PM Report #544590 Posted February 9, 2014 at 09:55 PM "Escreva uma função PHP chamada ordenaPorHorasTrabalhadas" E não "Use a função asort() para...." Será que eu poderia usar a função asort dentro da funçao ordena.....? tipo assim: <?php ini_set('display_errors',1); ini_set('display_startup_erros',1); error_reporting(E_ALL); $totalHorasTrabalhadas= array(); $totalHorasTrabalhadas["João"]=10; $totalHorasTrabalhadas["Tamar"]=15; $totalHorasTrabalhadas["Antônio"]=10; $totalHorasTrabalhadas["Tadeu"]=15; function ordenaPorHorasTrabalhadas(&$array) { asort($array); } print "<pre>"; print_r(ordenaPorHorasTrabalhadas($totalHorasTrabalhadas)); print "</pre>"; ?> Mas não imprimiu nada Bem isso não mostrou nada, porque não estás a retornar nenhum valor da função. Mas agora o resto depende de ti e das restrições do teu exercício, se vais reinventar a roda ou se vais user o asort. Contador de calorias: caloriaspordia.com
Carlos Rocha Posted February 10, 2014 at 12:10 AM Author Report #544598 Posted February 10, 2014 at 12:10 AM Mesmo que eu meta: return asort($array);[code] A saída é sempre 1. Não exibe o print_r();
HappyHippyHippo Posted February 10, 2014 at 12:12 AM Report #544599 Posted February 10, 2014 at 12:12 AM dava jeito teres lido a documentação que é apresentada no link que forneci quando mencionei a função: function ordenaPorHorasTrabalhadas(&$array) { asort($array); return $array; } IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
Carlos Rocha Posted February 10, 2014 at 01:50 AM Author Report #544605 Posted February 10, 2014 at 01:50 AM Muito Obrigado novamente. Vou me certificar com o professor se quer algorítimo de ordenação ou se pode ser assim também. Se for por ordenação, volto á dificuldade inicial: Foreach não tem como pegar próximo índice pois os índices são texto e não números. For os índices são textos. Novamente muito Obrigado!
I-NOZex Posted February 10, 2014 at 12:04 PM Report #544627 Posted February 10, 2014 at 12:04 PM facil, convertes essa assoc array, para uma de indice, algo do genero: $aux; foreach ($assoc_array as $value){ $aux[] = $value; } B2R » Beat2Revolution v3.0b | Regista e divulga-nos beat2revolution.net
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now