Conditional Resolve

5

I have a if that is not being satisfied ever.

I think I'm using some loop in the wrong way. I've checked the value of all variables, and they're all correct.

So I'm going to pass variable values here and you, if you can, analyze why if is not satisfied.

<?php
session_start();
//Aqui eu pego o numero de cartelas que o usuário informou em outra pag.
$ncarts = $_SESSION['ncarts'];
//pego o numero de pedras de cada cartela que o usuario informou em outra pag. 
$npedras = $_SESSION['npedras'];
// Pego a quantidade de pedras que vão ser sorteadas, inserido em outra pag.
$quantidade_sorteada = $_SESSION['quantidade_sorteada'];
/*inicio a array, posteriormente usada para guardar os números de cada cartela, sendo que cada indice é uma cartela, e seus valores são as pedras dessa cartela*/
$numeros_cartela = array();
/*inicio a array que guardará os valores que foram sorteados pelo usuário, cada índice tem apenas um valor, exemplo, sorteado 1 = 2, sorteado 3 = 12, etc...*/
$sorted = array();
/* aqui eu conto o numero de acertos que cada cartela faz, sendo que cada índice começa valendo zero - óbvio.*/
$contador_pontos_cartela = array();

/* Cada cartela quando é registrada em outra página tem um arquivo criado, para guardar seus valores. Esse arquivo tem o formato "cartela{$p).txt", onde $p é o numero da cartela. Então eu salvo cada linha do arquivo em um índice do array $numeros_cartela */
for ($p=1; $p<=$ncarts; $p++) {
$numeros_cartela[$p] = file ("cartela{$p}.txt"); 
}

/*Eu em outra página peguei os números sorteados, cada um em um campo com name variável. E orientei o form com GET, para esse arquivo aqui. Por isso cada número que o usuário digitou como sendo os sorteados, serão salvos em um array $sorted*/
for ($k=1; $k<=$quantidade_sorteada; $k++) {
$sorted[$k] = $_GET["numero$k"]; 
}

//aqui eu percorro as cartelas
for ($p=1; $p<=$ncarts; $p++) {
//inicio o contador da cartela como zero
$contador_pontos_cartela[$p] = 0;
for ($g=1; $g<=$quantidade_sorteada; $g++) {
/*cada cartela possui um índice, no array $numeros_cartela, então eu vou percorrer cada cartela, passando cada elemento da cartela para a variável $w.*/
foreach ($numeros_cartela[$p] as $w) {
// exibo os valores envolvidos na condicional, só para ver se estão certos
echo "Valor de w: {$w}<br>";
echo "Valor de sorted: {$sorted[$g]}<br>";
//confere se o numero sorteado é igual ao némero da cartela de índice $p
if ($w == $sorted[$g]){
//se for igual, soma 1 ao contador da cartela analisada
$contador_pontos_cartela[$p] += 1;
// esse echo foi só para ver se o problema era no if realmente...
echo "somou";
     }
    }
  }
}
// aqui eu imprimo na tela o número de acertos de cada cartela
for ($t=1; $t<=$ncarts; $t++) {
echo "Acertos cartela {$t}: {$contador_pontos_cartela[$t]}<br>";
}
?>

Suppose then that:

$ncarts = 3;
$quantidade_sorteada = 3;
$sorted[1] = 1;
$sorted[2] = 3;
$sorted[3] = 5;
$numeros_cartela[1] = array(1, 3);
$numeros_cartela[2] = array(5, 7);
$numeros_cartela[3] = array(9, 11);

With this, from what I had calculated, the last echo - there the end - would return:

Acertos cartela 1: 2
Acertos cartela 2: 1
Acertos cartela 3: 0

But the return is:

Acertos cartela 1: 0
Acertos cartela 2: 0
Acertos cartela 3: 0

And the return of that echo before if is:

Valor de w: 1 
Valor de sorted: 1
Valor de w: 3 
Valor de sorted: 1
Valor de w: 1 
Valor de sorted: 3
Valor de w: 3 
Valor de sorted: 3
Valor de w: 1 
Valor de sorted: 5
Valor de w: 3 
Valor de sorted: 5
Valor de w: 5 
Valor de sorted: 1
Valor de w: 7 
Valor de sorted: 1
Valor de w: 5 
Valor de sorted: 3
Valor de w: 7 
Valor de sorted: 3
Valor de w: 5 
Valor de sorted: 5
Valor de w: 7 
Valor de sorted: 5
Valor de w: 9 
Valor de sorted: 1
Valor de w: 11 
Valor de sorted: 1
Valor de w: 9 
Valor de sorted: 3
Valor de w: 11 
Valor de sorted: 3
Valor de w: 9 
Valor de sorted: 5
Valor de w: 11 
Valor de sorted: 5

Could someone explain why I had this result?

    
asked by anonymous 04.05.2014 / 05:06

1 answer

4

I found the problem!

What I did; I gave a% w of% over% w and%, and I noticed that the variable% w% contains empty spaces before it. I used the var_dump function of PHP, removed the spaces, and everything worked perfectly.

    
04.05.2014 / 16:22