Random Immagini + Testi

Marco Galli

Nuovo Utente
22 Mag 2021
16
0
1
Buongiorno a tutti. È il mio primo messaggio su questo forum e spero di fare tutto correttamente. In caso contrario mi scuso e sarà mia premura correggere l’errore.

Ho un problema che riguarda una funzione random.

Da un array con 10 immagini ne faccio estrarre tre in modo randomico. Fin qui tutto bene.

Avrei l'esigenza però di stampare a video anche un testo che si riferisca direttamente alle immagini che sono uscite.

Per esempio, nell’array ci sono 10 immagini con 10 monumenti italiani. L'utente ne può estrarre in modo randomico 3 e, in base a quelli che vengono fuori, dovrebbe apparire la descrizione testuale del monumento.

Ho cercato molto on-line per trovare qualcosa, ma credo di non sapere impostare la ricerca (causa personale ignoranza) perché non trovo nulla di soddisfacente o minimamente confacente alle mie esigenze.

Qualche esperto potrebbe instradarmi in qualche modo?

Grazie,
Marco
 
Se le immagini sono in un array, immagino che tu stia pescando in modo random l'indice. Quindi crei un secondo array con le descrizioni e quando peschi l'indice mostri anche l'elemento dell'array descrizioni associato a quel l'indice. Comunque posta il codice così è più chiaro
 
Ciao Tommy. Grazie per la tua risposta. Il codice che ho usato è il seguente:

<?php

$var[0]="<img src='monumento/0.png' />";
$var[1]="<img src='monumento/1.png' />";
$var[2]="<img src='monumento/2.png' />";
$var[3]="<img src='monumento/3.png' />";
$var[4]="<img src='monumento/4.png' />";
$var[5]="<img src='monumento/5.png' />";
$var[6]="<img src='monumento/6.png' />";
$var[7]="<img src='monumento/7.png' />";
$var[8]="<img src='monumento/8.png' />";
$var[9]="<img src='monumento/9.png' />";
$var[10]="<img src='monumento/10.png' />";

$chiavi = array_rand ($var, 2 );
print $var[$chiavi[0]];
echo "&nbsp;";echo "&nbsp;";
print $var[$chiavi[1]];
?>

Credo che il problema sia proprio mostrare anche l'elemento dell'array con le descrizioni associato a quell'indice.
 
Devi creare un array $second_var identico al precedente (con 10 elementi) "associato" a $var, quindi ad esempio se la foto di var[0] mostra l'immagine del colosseo, allora $second_var[0] è la descrizione del colosseo, e cosi via... Poi nell'echo basta aggiungere $second_var[$chiavi[0]] e $second_var[$chiavi[1]] e vedrai le relative descrizioni
 
  • Like
Reactions: Marco Galli
Devi creare un array $second_var identico al precedente (con 10 elementi) "associato" a $var, quindi ad esempio se la foto di var[0] mostra l'immagine del colosseo, allora $second_var[0] è la descrizione del colosseo, e cosi via... Poi nell'echo basta aggiungere $second_var[$chiavi[0]] e $second_var[$chiavi[1]] e vedrai le relative descrizioni
Grazie Tommy. Funziona tutto alla grande. Sei stato molto gentile.
 

@Marco Galli

Quando posti del codice devi usare gli appositi tag che trovi nella barra degli strumenti per rendere più legginile il codice!
Pena la chiusura della discussione!
Prima di continuare sul forum leggi attentamente il regolamento generale e quello della sezione dove posti!!

codice.JPG
 
Buongiorno a tutti.

In fase di controllo ho notato che le immagini vengono tirate fuori in modo casuale, ma seguendo l'ordine di come sono nell'array. Intendo un ordine crescente. Quindi, se l'array avesse 10 elementi, la funzione darà sempre qualcosa del tipo: 2, 4, 8...

Per caso, rimanendo sullo schema

Codice:
<?php

$var[0]="<img src='monumento/0.png' />";
$var[1]="<img src='monumento/1.png' />";
$var[2]="<img src='monumento/2.png' />";
$var[3]="<img src='monumento/3.png' />";
$var[4]="<img src='monumento/4.png' />";
$var[5]="<img src='monumento/5.png' />";
$var[6]="<img src='monumento/6.png' />";
$var[7]="<img src='monumento/7.png' />";
$var[8]="<img src='monumento/8.png' />";
$var[9]="<img src='monumento/9.png' />";
$var[10]="<img src='monumento/10.png' />";

$chiavi = array_rand ($var, 2 );
print $var[$chiavi[0]];
echo "&nbsp;";echo "&nbsp;";
print $var[$chiavi[1]];
?>

è possibile creare qualcosa del tipo: 8 - 3 - 5... quindi con una vera estrazione random?
 
è possibile creare qualcosa del tipo: 8 - 3 - 5... quindi con una vera estrazione random?
E' normale che la funzione array_rand prenda gli indici in ordine, nel tuo caso dovresti tenere in questo modo per scegliere i 2 indici ordinati e poi usare la funzione shuffle() che ti riordina casualmente gli indici scelti casualmente
 
E' normale che la funzione array_rand prenda gli indici in ordine, nel tuo caso dovresti tenere in questo modo per scegliere i 2 indici ordinati e poi usare la funzione shuffle() che ti riordina casualmente gli indici scelti casualmente
Ciao Tommy, sì, ci avevo già provato, ed effettivamente funziona per la disposizione delle immagini, ma le descrizioni non corrispondono più. La funzione shuffle() pesca casualmente anche nell'array delle descrizioni (come mi avevi giustamente fatto fare tu). Quindi, se le foto estratte random fossero:

- Colosseo
- Arena di Verona
- Reggia di Caserta

Nelle descrizioni compare:

- La Basilica di San Marco
- Il teatro di Taormina
- Il villaggio nuragico di Su Nuraxi

Ovviamente è qualcosa che sbaglio io.
 
Codice:
<?php

$var[0]="<img src='monumento/0.png' />";
$var[1]="<img src='monumento/1.png' />";
$var[2]="<img src='monumento/2.png' />";
$var[3]="<img src='monumento/3.png' />";
$var[4]="<img src='monumento/4.png' />";
$var[5]="<img src='monumento/5.png' />";
$var[6]="<img src='monumento/6.png' />";
$var[7]="<img src='monumento/7.png' />";
$var[8]="<img src='monumento/8.png' />";
$var[9]="<img src='monumento/9.png' />";
$var[10]="<img src='monumento/10.png' />";

$txt_var[0]="Il Colosseo";
$txt_var[1]="La Reggia di Caserta";
$txt_var[2]="La Galleria degli Uffizi";
$txt_var[3]="L’Arena di Verona";
$txt_var[4]="La Basilica di San Marco";
$txt_var[5]="La Torre di Pisa";
$txt_var[6]="Il Duomo di Milano";
$txt_var[7]="La Mole Antonelliana";
$txt_var[8]="Il villaggio nuragico di Su Nuraxi";
$txt_var[9]="Il teatro di Taormina";
$txt_var[10]="Castel del Monte";

$ruzzle = shuffle($var);
$chiavi = array_rand ($var, 2 );
print $var[$chiavi[0]];
print $var[$chiavi[1]];
print "<br><br>";
print $text_var[$chiavi[0]];
print $text_var[$chiavi[1]];
?>
 
Nel tuo codice shuffle non veniva utilizzato, bisogna cambiare così:
PHP:
$chiavi = array_rand ($var, 2 );
shuffle($chiavi);
print $var[$chiavi[0]];
print $var[$chiavi[1]];
print "<br><br>";
print $text_var[$chiavi[0]];
print $text_var[$chiavi[1]];
 
  • Like
Reactions: Marco Galli

Discussioni simili