PHP dynamic variable name, according to value of another variable [duplicate]

0

Imagine that I have the code below:

<?php

$linha1 = 0;
$linha2 = 0;
$linha3 = 0;
$linha4 = 0;
$linha5 = 0;

// Array com 5 numeros
$cincoNumeros = [1, 2, 3, 4, 5];

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

    // Misturo aleatoriamente o array acima
    shuffle($cincoNumeros);
    // Seleciono um array unitário (um número) no array que foi misturado. 
    $umNumero = array_slice($cincoNumeros, 0, 1);
    // Pego o valor do index do array $umNumero
    $valor = $umNumero[0];

    // Agora, de acordo com esse número sorteado, incremendo a variavel correspondente:

    switch ($valor) {
        case 1:
        $linha1 += 1;
        break;
        case 2:
        $linha2 += 1;
        break;
        case 3:
        $linha3 += 1;
        break;
        case 4:
        $linha4 += 1;
        break;
        case 5:
        $linha5 += 1;
        break;
    }

}

?>

That way it works, but imagine what size it would look like if we were talking about 100, 500, 1000 variable lines.

Is there any way to dynamically rename the variable, using only a FOR without SWITCH, as I suggest below?

<?php


// crio um laço com 50 loops, por exemplo
for($i=1;$i<=50;$i++) {

    // Misturo aleatoriamente o array $umNumero
    shuffle($cincoNumeros);
    // Seleciono um array unitário (um número) no array que foi misturado. 
    $umNumero = array_slice($cincoNumeros, 0, 1);
    // Pego o valor do index do array $umNumero
    $valor = $umNumero[0];
    $linha.$valor += 1; // Incremento de uma variavel linhaX qualquer, de acordo com valor sorteado. Digamos que o valor sorteado seja 3 então, a variável a ser incrementada seria $linha3. 
}

?>

I know the variable name $ line. $ value is wrong. It would only be concatenating, but it gives error because there is no such variable "line".

I ask: How can I make the name of the variable vary according to the amount drawn?

The code would be leaner than using the switch.

    
asked by anonymous 18.09.2018 / 04:32

1 answer

0
$linha = array();    

//crio um laço com 50 loops, por exemplo    
for($i=1;$i<=50;$i++) {    

   shuffle($cincoNumeros); 
   $umNumero = array_slice($cincoNumeros, 0, 1);       
   $valor = $umNumero[0];
   //cada linha corresponde a uma posição do array
   $linha[$valor] += 1;
}
    
18.09.2018 / 04:59