Sbagli concettualmente l'utilizzo del mio script.
Prima devi capire lo scopo di php e di javascript in generale come linguaggi.
Lo scopo finale del php in ambito web server è solitamente "sparare", "printate" codice html.
Il javascript invece viene eseguito dal client, quindi dal web browser, e non puoi semplicemente passare come fai tu una variabile php nel js.
esempio non puoi:
Codice PHP:
<img onclick="loadme($var)"/> oppure <img onclick="loadme(<?php $var; ?>)"/>
l'unico modo per passare una variabile è capire come funziona il caricamento di una pagina web.
1. il browser richiede al server una pagina.
2. se il web server riconosce che la pagina debba essere prima processata (esempio se è .php o .asp) vengono fatti tutti i calcoli, tutte le query e viene preparata una pagina html priva di codice php (prova a fare visualizza sorgente in una pagina php dopo che ha caricato noterai che tutto il codice php eseguito scompare lasciando nel codice solo i risultati dei vari print e echo)
3. la pagina viene inviata la client che se la carica dovutamente
4. il codice js, gli eventi del mouse etc vengono eseguiti.
dove risiede il problema?
Il problema è che tu non puoi semplicemente fare
Codice PHP:
<?php
$ar=array(1,2,3,4,5);
echo "<img onclick='funzionemia($ar)'/>";
?>
perchè così facendo non passi al js il contenuto dell' array php come potresti pensare, ma l'output di echo $ar; quindi Array().
in definitiva una volta caricata la pagina avrai
Codice PHP:
<img onclick='funzionemia(Array())'/>
che per javascript nulla vuol dire, non gli stai passando nessun valore.
Cosa fa quindi la funzione che avevo scritto?
Codice PHP:
function arTojsar($ar)
{
$jsar="[";
foreach ($temp as $t)
{
if(is_string($t))$jsar.="'$t',";
else $jsar.="$t,";
}
$jsar=substr($jsar,0,-1)."]"; //tolgo la virgola alla fine e chiudo l'array
return $jsar;
}
utilizzo:
Codice PHP:
$ar=array(1,2,"tre",4,5); //creo un array, non supporta gli array associativi, o almeno, ne perde le chiavi (si dovrebbe usare un'altra sintassi)
$jsar=arTojsar($ar);
//adesso, facendo
echo $jsar; //restituisce [1,2,'tre',4,5] questo è il sistema con cui si definiscono gli array in js
//adesso, avendo
echo "<img onclick='funzionemia($jsar)'/>"; //mi da come output <img onclick='funzionemia([1,2,'tre',4,5])'/>
//quindi passerà un vero array js costruito da quello php
C'è da dire che questo sistema o funzione, restituisce una STRINGA non un array,
quindi è ovvio che se dato l'array
array("gennaio","febbraio","marzo");
restituisce la stringa ['gennaio','febbraio','marzo']
echo $jsar[0]; //stampa il primo carattere della stringa cioè [
echo $jsar[1]; //stampa il secondo carattere della stringa cioè '
echo $jsar[2]; //stampa il terzo carattere cioè g
echo count($jsar); conta gli elementi della variabile e li stampa, quindi 1
senza a capi quindi ['g1
Spero di essere stato chiaro, e scusa se ti sono sembrato arrogante, ma volevo spiegare bene questo concetto, fammi sapere