Questo mi ha fatto impazzire per tutta la sera. Fondamentalmente, ho bisogno di impostare un valore specifico in un array multidimensionale dopo aver disinfettato il valore e poi di nuovo (forse, dipende dalla convalida, se la validazione fallisce allora il valore deve essere impostato su una stringa vuota) dopo aver convalidato il valore. Diciamo che ho questo array messaggio:Come impostare dinamicamente valore nell'array multidimensionale per riferimento
$data['should']['be']['int'] = ' yjd';
Dopo la sanificazione il valore con filter_var($value, FILTER_SANITIZE_NUMBER_INT);
sto ricevendo una stringa vuota indietro. Dovrei quindi in qualche modo impostare il valore su $data['should']['be']['int']
come stringa vuota.
Questo valore viene quindi passato a una funzione di convalida, che non riesce, perché la stringa vuota non è un numero intero. Ancora una volta, quel valore convalidato dovrebbe quindi essere impostato su $data['should']['be']['int']
su una stringa vuota.
Prima la cosa intera convalida prende il via mi risparmio tutti i tasti corrispondenti in una matrice, quindi per il momento ho bisogno di disinfettare o convalidare Ho qualcosa di simile a disposizione:
$keys = array(
0 => 'should',
1 => 'be',
2 => 'int'
);
I' Ho provato ad accedere all'array $data
usando le chiavi precedenti in un ciclo foreach facendo riferimento all'array &$data
per impostare il nuovo valore, ma non sono stato in grado di farlo, indipendentemente da ciò che ho provato. Quanto sopra è solo un esempio semplificato. Il tutto fa parte di una classe di validazione, quindi non conosco la profondità esatta dell'array $data
passato.
Qualsiasi suggerimento sarebbe molto apprezzato! Grazie per l'aiuto!
Modifica: Pensavo che non potessi modificare il post, ma alla fine è stata solo la mia connessione Internet. Si prega di ignorare il mio commento qui sotto. In ogni modo, qui è un metodo che ho provato a chiamare in modo ricorsivo:
protected function set_value(&$data, $value) {
foreach($data as &$val) {
if(is_array($val)) {
$this->set_value($val, $value);
} else {
$val = $value;
}
}
}
Per avviare il ciclo off ho fatto questo:
$this->set_value($data[$keys[0]], $value);
Mostra altro codice che avete provato. – mkaatman
Commento rimosso, vedere modifica sopra. – shabushabu