Tengo una tabla con 5 columnas (id, s1, s2, s3, s4) y digamos, 3 filas:

First one -> (1, 40, 30, 20, 15) 
Second one -> (2, 22, 32, 45, 18)
Third one -> (3, 89, 24, 65, 12)

Entonces obtengo una fila aleatoria de las columnas de 4 s de, por ejemplo, la identificación de la primera fila.

$query = "SELECT s1, s2, s3, s4 FROM table WHERE id = 1";
$result = mysql_query($query);
$row = mysql_fetch_assoc($result);
echo $row[array_rand($row, 1)].'<br>';

Con esto, obtengo, de la fila de identificación número 1, un azar entre las columnas de 4 s (40, 30, 20 o 15), pero lo que realmente quiero obtener es el nombre de esa columna, no el valor de ese campo de la columna (no el 40, 30, 20 o 15, sino s1, s2, s3 o s4) para poder imprimir ese nombre más tarde (para que se cargue una imagen u otra si se elige s1, s2, s3 o s4) y actualice el campo aleatorio con 1 número menos (si obtuve s1, 40 es 39, o si el aleatorio fue s2, 30 es 29, etc., etc.).

No sé si mi lógica es incorrecta o debería hacer un enfoque diferente con las tablas.

¡Gracias de antemano!

php
0
Jorge Garcia 14 dic. 2016 a las 22:35

2 respuestas

La mejor respuesta

array_rand devuelve el nombre de la columna. Así que simplemente asigne eso a otra variable:

$col = array_rand($row, 1);
$col_value = $row[$col];
0
Barmar 14 dic. 2016 a las 19:59

Solo úsalo así:

echo array_rand($row).'<br>';

0
nowaja 14 dic. 2016 a las 19:39