In quale contesto lavori? Ovvero dove si trova questo codice?
Cosa intendi per non funziona?
Rispondendo ai commenti del codice, json_decode restituisce un array di tipo associativo, per cui se la stringa json è {"nome":1,"cognome":2,"indirizzo":3,"ecc":4,"etc":5}
Per accedere al secondo valore 2 dovrai scrivere
$sms['altro']
se subito dopo fai $sms = array(); svuoti l'array reinizializzandolo con valori nulli quindi tutto il codice che c'è dopo non potrà più lavorare su $sms.
La linea if ($event->customfields_data && $event->customfields_data != '')
controlla che la variabile sia piena e contemporaneamente diversa da vuoto (un controllo un po ridondante, non credi?)
Se $event è un oggetto non puoi scrivere echo $event ma dovrai utilizzare la funzione var_dump();
La linea foreach (json_decode($event->customfields_data,true) as $field)
cicla sul contenuto dell'array creato in seguito alla decodifica di quella stringa (che poi sarebbe lo stesso contenuto iniziale di $sms!!!)
Questo invece controlla che nell'array prodotto dalla decodifica ci sia il valore di $fiels['mobile']:
if (in_array($field['mobile'],json_decode($event->customfields_data,true)))
//questa linea invece assegna alla variabile $data il contenuto della variabile $field tramite la chiave data Giusto?
$sms[] = $field['data'];
Giusto
//questa linea dovrebbe stampare il contenuto della variabile $data Giusto?
echo $sms.'[br /]';}} ?>
Sbagliato