Ir para conteúdo
Fórum Script Brasil
  • 0

if dentro de foreach - contar resultados


jamiel

Pergunta

<form action="<?php echo $_SERVER['REQUEST_URI']; ?>" method="post">
 
  
 
  <label id="lista02">Valor 1</label>
   <input type="txt" name="valor1" /> <br>
 
   <label id="lista02">Valor 2</label>
   <input type="txt" name="valor2" /> <br>
 
    <label id="lista02">Valor 3</label>
   <input type="txt" name="valor3" /> <br>
 
    <label id="lista02">Valor 4</label>
   <input type="txt" name="valor4" /> <br>
 
    <label id="lista02">Valor 5</label>
   <input type="txt" name="valor5" /> <br>
 
    <label id="lista02">Valor 6</label>
   <input type="txt" name="valor6" /> <br>
 
    <label id="lista02">Valor 7</label>
   <input type="txt" name="valor7" /> <br>
 
    <label id="lista02">Valor 8</label>
   <input type="txt" name="valor8" /> <br>
 
    <label id="lista02">Valor 9</label>
   <input type="txt" name="valor9" /> <br>
 
    <label id="lista02">Valor 10</label>
   <input type="txt" name="valor10" /> <br>
 
 
 
 
 
<p>
   <input type="submit" value="Calcular" name="calcular">
</p>
 
</form>
 
<hr>
 
 
=====================================================
 
<?php
 
$calc = $_POST["calcular"];
 
 
$valor1 = $_POST["valor1"];
$valor2 = $_POST["valor2"];
$valor3 = $_POST["valor3"];
$valor4 = $_POST["valor4"];
$valor5 = $_POST["valor5"];
$valor6 = $_POST["valor6"];
$valor7 = $_POST["valor7"];
$valor8 = $_POST["valor8"];
$valor9 = $_POST["valor9"];
$valor10 = $_POST["valor10"];
 
 
$valor[1] = $valor1;
$valor[2] = $valor2;
$valor[3] = $valor3;
$valor[4] = $valor4;
$valor[5] = $valor5;
$valor[6] = $valor6;
$valor[7] = $valor7;
$valor[8] = $valor8;
$valor[9] = $valor9;
$valor[10] = $valor10;
 
$soma = array_sum($valor);
 
if ($calc) {
 
 
 
                
          
          echo "<b><br>e) Quantos e quais valores s&atilde;o maiores que a m&eacute;dia.</b><br>";  
               
   
 
             
            foreach ($valor as $fibo) {
                
 
               if ($fibo > $soma/10) {
 
 
                   echo "Valores maiores que a m&eacute;dia : ".$fibo."<br>";
 
                     
 
               }
 
            }
            
 
 
}

 

 

 

Explicando:

 

1. Há dez campos para inserir números

2. A questão tem 5 opções e uma delas pede o seguinte : "e) imprima quantos e quais dos valores são maiores que a média desses valores."

3. Com esse código que está aí, que fiz, consigo que só apareçam os números maiores que a MÉDIA. A soma é feita e tudo mais.

4. A parte de contar quantos números SÃO MAIORES QUE A MÉDIA é que não estou conseguindo. 

 

Já tentei de tudo. Consigo até contar. Mas, apenas dentro do loop e mesmo contando apenas por linha. Ou seja, a cada de resultado aparece a quantidade igual 1. É até meio que óbvio, visto que vai quebrando linha e mostrando os resultado.

 

Ex:

Digamos que os 5 primeiros números foram 10, 9, 8, 7 e 6. Com esse código, apenas eles são mostrados. Até porque são os únicos maiores que determinada MÉDIA. Gostaria de contar esse resultado. Tipo:5 números. 

 

Se alguém puder ajudar, agradeço desde já ...

Link para o comentário
Compartilhar em outros sites

5 respostass a esta questão

Posts Recomendados

  • 0

Oi Jamiel!
O HTML5 teve sua primeira especificação anunciada no início de 2008!
Pois é... em alguns dias, teremos gente usando html5 há 9 anos!!!
Segundo a W3C, mantenedora do HTML, id é igual identidade de gente mesmo. Não podem existir duas iguais!
Veja em http://www.w3.org/TR/2011/WD-html5-20110525/elements.html#the-id-attribute
Não existe type="txt"! Veja em: http://www.w3.org/TR/html-markup/input.html
Para entrada de números, use o type="number" e em html5 não se usa mais aquela barrinha no final das tags: />
Veja exemplos em: http://www.w3schools.com/html/html_form_input_types.asp

scriptBrasil.JPG.0e93b4d9ed936ea1f47410b

Segue sugestão de solução:

<meta charset="utf-8">
<form action="<?= $_SERVER['REQUEST_URI']; ?>" method="post">
    <?php
    $numInputs = 10; // define quantos campos de entrada de número serão criados
    $inputs = null; // inicia uma variável para guardar os inputs
    for ($i = 1; $i <= $numInputs; $i++) { // estrutura de repetição para gerar os inputs
        // adiciona os inputs com seus respectivos labels à variável $inputs
        $inputs .= "<label>Valor $i</label> <input type='number' placeholder='Valor $i' title='Digite o valor $i' name='valor$i'><br>";
    }
    echo $inputs; // exibe os inputs na tela
    ?>
    <p>
        <input type="submit" value="Calcular">
    </p>

</form>
<hr>=====================================================

<?php
if (sizeof($_POST)) {
    $valores = $_POST;

    $soma = array_sum($valores); // soma os valores

    echo '<h3>e) Quantos e quais valores são maiores que a média.</h3>';
    
    foreach ($valores as $fibo) {
        if ($fibo > $soma / $numInputs) {
            $maioresQueAMedia[] = $fibo; // guarda os valores maiores que a média em um array
        }
    }
    if (isset($maioresQueAMedia)) { // se a variável $maioresQueAMedia existir, existem valores maiores que a média
        echo '<p>Quantidade de valores maiores que a média: ' . sizeof($maioresQueAMedia) . '</p>';
        echo '<p>Valores maiores que a média: ' . implode(', ', $maioresQueAMedia) . '</p>';
    }
}

Link para o comentário
Compartilhar em outros sites

  • 0
13 minutos atrás, lowys disse:

Oi Jamiel!
O HTML5 teve sua primeira especificação anunciada no início de 2008!
Pois é... em alguns dias, teremos gente usando html5 há 9 anos!!!
Segundo a W3C, mantenedora do HTML, id é igual identidade de gente mesmo. Não podem existir duas iguais!
Veja em http://www.w3.org/TR/2011/WD-html5-20110525/elements.html#the-id-attribute
Não existe type="txt"! Veja em: http://www.w3.org/TR/html-markup/input.html
Para entrada de números, use o type="number" e em html5 não se usa mais aquela barrinha no final das tags: />
Veja exemplos em: http://www.w3schools.com/html/html_form_input_types.asp

scriptBrasil.JPG.0e93b4d9ed936ea1f47410b

Segue sugestão de solução:

<meta charset="utf-8">
<form action="<?= $_SERVER['REQUEST_URI']; ?>" method="post">
    <?php
    $numInputs = 10; // define quantos campos de entrada de número serão criados
    $inputs = null; // inicia uma variável para guardar os inputs
    for ($i = 1; $i <= $numInputs; $i++) { // estrutura de repetição para gerar os inputs
        // adiciona os inputs com seus respectivos labels à variável $inputs
        $inputs .= "<label>Valor $i</label> <input type='number' placeholder='Valor $i' title='Digite o valor $i' name='valor$i'><br>";
    }
    echo $inputs; // exibe os inputs na tela
    ?>
    <p>
        <input type="submit" value="Calcular">
    </p>

</form>
<hr>=====================================================

<?php
if (sizeof($_POST)) {
    $valores = $_POST;

    $soma = array_sum($valores); // soma os valores

    echo '<h3>e) Quantos e quais valores são maiores que a média.</h3>';
    
    foreach ($valores as $fibo) {
        if ($fibo > $soma / $numInputs) {
            $maioresQueAMedia[] = $fibo; // guarda os valores maiores que a média em um array
        }
    }
    if (isset($maioresQueAMedia)) { // se a variável $maioresQueAMedia existir, existem valores maiores que a média
        echo '<p>Quantidade de valores maiores que a média: ' . sizeof($maioresQueAMedia) . '</p>';
        echo '<p>Valores maiores que a média: ' . implode(', ', $maioresQueAMedia) . '</p>';
    }
}

Rapaz! Você mitou no infinito ...rsrssrs

Vou estudar bem esse seu código. Simplificação monstra ...

Muito obrigado!

Link para o comentário
Compartilhar em outros sites

  • 0

Não entendi algumas coisas nesse código:

 

<?php
if (sizeof($_POST)) {
    $valores = $_POST;

    $soma = array_sum($valores); // soma os valores

    echo '<h3>e) Quantos e quais valores são maiores que a média.</h3>';
    
    foreach ($valores as $fibo) {
        if ($fibo > $soma / $numInputs) {
            $maioresQueAMedia[] = $fibo; // guarda os valores maiores que a média em um array
        }
    }
    if (isset($maioresQueAMedia)) { // se a variável $maioresQueAMedia existir, existem valores maiores que a média
        echo '<p>Quantidade de valores maiores que a média: ' . sizeof($maioresQueAMedia) . '</p>';
        echo '<p>Valores maiores que a média: ' . implode(', ', $maioresQueAMedia) . '</p>';
    }
}

Obs: Putz! Ali foi sem querer querendo (type=txt (text))!

1. sizeof($_POST)

2. $valores = $_POST (é como se fosse um ARRAY?)

3. $maioresQueAMedia[] = $fibo; (é como se pegasse esses valores e armzanasse nessa nova variável ($maioresQueAMedia)?)

4. sizeof($maioresQueAMedia) (não entendi)

5. implode (também não entendi)

Agradeço desde já ,.....

Link para o comentário
Compartilhar em outros sites

  • 0

Oi Jamiel!

No php.net você tem a oportunidade de encontrar o manual completasço do php. E grande parte já está traduzida para o português-br.

Lá você terá a possibilidade de ler um pouco sobre sizeof: http://php.net/manual/pt_BR/function.sizeof.php

$_POST: http://php.net/manual/pt_BR/reserved.variables.post.php

Arrays: http://php.net/manual/pt_BR/function.array.php

Implode: http://php.net/manual/pt_BR/function.implode.php

bons estudos!

Link para o comentário
Compartilhar em outros sites

  • 0
Em 18/12/2015 at 17:53, lowys disse:

Oi Jamiel!

No php.net você tem a oportunidade de encontrar o manual completasço do php. E grande parte já está traduzida para o português-br.

Lá você terá a possibilidade de ler um pouco sobre sizeof: http://php.net/manual/pt_BR/function.sizeof.php

$_POST: http://php.net/manual/pt_BR/reserved.variables.post.php

Arrays: http://php.net/manual/pt_BR/function.array.php

Implode: http://php.net/manual/pt_BR/function.implode.php

bons estudos!

Obrigado!

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,8k
×
×
  • Criar Novo...