Ir para conteúdo

POWERED BY:

Arquivado

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

Martinsrj

[Resolvido]Como utilizo Array no PHP

Recommended Posts

Ola pessoa, boa tarde!

Estou com duvidas na criacao do array em php.

Irei colocar o codigo em portugol ou pascal abaixo:

programa media
Variavel
   md: array[1..5] tipo real;
   soma, media : real;
   I: inteiro;
Inicio
   soma := 0;
   Escreva (`calculo de media`);
Para I := 1 ate 5 faca
   inicio
	  escreva (Informa a media); leia (md[I]);
	  soma := soma  + md[I];
   fim;
media := soma / 8;
Escreva (A media e:);
Escreva (media); // imprimindo a variavel
Como que eu posso fazer o codigo acima em PHP

Aqui vai o codigo do formulario:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Programa Fatorial</title>
</head>

<body> 
Media de cada aluno
<br/>
<form action="processa_dados.php" method="POST">
Digite a primeira media: <input type="text" name="media_1" size="5"><br/>
Digite a segunda media: <input type="text" name="media_2" size="5"><br/>
Digite a terceira media: <input type="text" name="media_3" size="5"><br/>
Digite a quarta media: <input type="text" name="media_4" size="5"><br/>
Digite a quinta media: <input type="text" name="media_5" size="5"><br/>
<input type="submit" value="Calcular Media" name="btn_media">
</form>

</body>
</html>

Abracos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

CLI:

<?php
define('endl', "\n");
if(!defined('STDIN')) define('STDIN', fopen('php://stdin', 'r'));

echo endl, str_repeat('-', 50),
endl, 'Calculo de médias', 
endl, str_repeat('-', 50), endl;

$md = array();
$soma = 0;
for($i = 0;$i < 5;$i++){
	echo 'Média:';
	fscanf(STDIN, '%d\n', $md[$i]);
	if(!($md[$i] >= 0 && $md[$i] <= 10)){
		$i--;
		echo '\a[Média inválida]', endl;
		continue;
	}
	$soma += $md[$i];
}
echo str_repeat('-', 35), endl,
'A média é:', /*(faça um cast para o tipo desejado)*/$soma/8, endl,
str_repeat('-', 35), endl;
fclose(STDIN);
?>

Command:

php -f nomeDoScript.php

CGI:

<?php
$md = array();
$soma = 0;
for($i = 0;$i < 5;$i++){
	$md[$i] = $_POST['media_'.($i+1)];
	if(!($md[$i] >= 0 && $md[$i] <= 10)){
		echo 'Médias inválidas foram informadas', nl2br("\n"),
		'As médias devem estar entre 0 e 10.';
		exit(1);
	}
	$soma += $md[$i];
}
echo 'A média é:', /*(faça um cast para o tipo desejado)*/$soma/8;
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ola Eibon!

 

Desculpa, mas nao entendi o seu codigo.

No formulario que eu crei acima (index.php), tem como eu colocar todos os <input type="text" name="media_1" size="5"> (dados) em array na pagina: processa_dados.php

 

Desde ja agradeco a todos!

Compartilhar este post


Link para o post
Compartilhar em outros sites

<?php

$md = array();

$soma = 0;

for($i = 0;$i < 5;$i++){

$md[$i] = $_POST['media_'.$i+1];

if(!($md[$i] >= 0 && $md[$i] <= 10)){

echo 'Médias inválidas foram informadas', nl2br("\n"),

'As médias devem estar entre 0 e 10.';

exit(1);

}

$soma += $md[$i];

}

echo 'A média é:', /*(faça um cast para o tipo desejado)*/$soma/8;

?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Entendi a sua logica, porem esta dando erro nessa linha:

$md[$i] = $_POST['media_'.$i+1];

 

Aparece o seguinte erro:

Notice: Undefined offset: 1 in C:\Arquivos de programas\Apache Software Foundation\Apache2.2\htdocs\algoritmo\vetor\processa_dados.php on line 5

 

Notice: Undefined offset: 1 in C:\Arquivos de programas\Apache Software Foundation\Apache2.2\htdocs\algoritmo\vetor\processa_dados.php on line 5

 

Notice: Undefined offset: 1 in C:\Arquivos de programas\Apache Software Foundation\Apache2.2\htdocs\algoritmo\vetor\processa_dados.php on line 5

 

Notice: Undefined offset: 1 in C:\Arquivos de programas\Apache Software Foundation\Apache2.2\htdocs\algoritmo\vetor\processa_dados.php on line 5

 

Notice: Undefined offset: 1 in C:\Arquivos de programas\Apache Software Foundation\Apache2.2\htdocs\algoritmo\vetor\processa_dados.php on line 5

A média é:0

 

<?php

$md = array();

$soma = 0;

for($i = 0;$i < 5;$i++){

$md[$i] = $_POST['media_'.$i+1];

if(!($md[$i] >= 0 && $md[$i] <= 10)){

echo 'Médias inválidas foram informadas', nl2br("\n"),

'As médias devem estar entre 0 e 10.';

exit(1);

}

$soma += $md[$i];

}

echo 'A média é:', /*(faça um cast para o tipo desejado)*/$soma/8;

?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Troque:

$md[$i] = $_POST['media_'.$i+1];

Por:

$md[$i] = $_POST['media_'.($i+1)];

Erro meu...mal.

O primeiro tá normal.O problema é que o PHP faz a concatenação antes da soma.Com os parentesis isso é resolvido.

<?php
$a = 'abc';
echo $a+1;
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eibon, obrigado ai pelas dicas, porem apos realizar as mudancas aparece esse erro:

Notice: Undefined index: media_6 in C:\Arquivos de programas\Apache Software Foundation\Apache2.2\htdocs\algoritmo\vetor\processa_dados.php on line 5

 

Aproveitando, quero tirar duas duvidas,

1) $md[$i] = $_POST['media_'.($i+1)]; aqui você esta dando um incremento para que a variavel tenha os valores dos input, correto?

 

2) Qual foi a funcao do: exit(1);

 

 

Desde ja agradeco pelas dicas novamente.

 

 

Troque:

$md[$i] = $_POST['media_'.$i+1];

Por:

$md[$i] = $_POST['media_'.($i+1)];

Erro meu...mal.

O primeiro tá normal.O problema é que o PHP faz a concatenação antes da soma.Com os parentesis isso é resolvido.

<?php
$a = 'abc';
echo $a+1;
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Impossivel ter dado o erro que você disse o loop indo só até 4.Testei e funcionou normal.

A função exit serve para parar o script,o inteiro 1 passado a ela quer dizer ao programador que ver meu code 'pare a execução já que de certa forma houve um erro'.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Estranho, porque esta ocorrendo aqui comigo: Notice: Undefined index: media_6 in C:\Arquivos de programas\Apache Software Foundation\Apache2.2\htdocs\algoritmo\vetor\processa_dados.php on line 5

A média é:6

Nos campos do formulario digitei tudo 6.

 

Segue o codigo do processa_dados.php:

<?php
$md = array();
$soma = 0;
for($i = 0;$i <= 5;$i++){
$md[$i] = $_POST['media_'.($i+1)];
if(!($md[$i] >= 0 && $md[$i] <= 10)){
echo 'Médias inválidas foram informadas', nl2br("\n"),
'As médias devem estar entre 0 e 10.';
exit(1);
}
$soma += $md[$i];
}
echo 'A média é:', $soma/5;
?>

Obrigado

 

Impossivel ter dado o erro que você disse o loop indo só até 4.Testei e funcionou normal.

A função exit serve para parar o script,o inteiro 1 passado a ela quer dizer ao programador que ver meu code 'pare a execução já que de certa forma houve um erro'.

---

Resolvido,

problema estava nessa linha:

for($i = 0;$i <= 5;$i++){

porem o correto e assim

for($i = 0;$i < 5;$i++){

pois o indice comeca com 0

 

Muito obrigado Eibon

Compartilhar este post


Link para o post
Compartilhar em outros sites

Claro que tava occorrendo com você.

Você alterou o código que te passei,e ainda o fez errado.

-.-

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.