Salve,
sto passando una serie di parametri ad una funzione, tra le quali una chiave di un array che viene modificata all'interno.
Il codice non è bellissimo da vedere, lo posto comunque. Quello che avviene è che nel momento in cui passo il nome della chiave tramite variabile ottengo Warning: Illegal string offset 'E VERS 1' in XXX on line 507.
La cosa curiosa è che nonostante il warning, i dati finiscono perfettamente al loro posto.Posto il codice, lo ripeto, non è nè bello nè ottimizzato al momento, ma è un blocco complesso e lo sto curando in procedurale per ora. Come potrei eliminare questo warning, bruttino da vedere a video, senza disabilitare gli e-warning?
Ho commentato in maniera generosa così da far capire meglio:
Codice PHP:
function Versamenti_process($datavers, $evers, $combine, $versamenti, $temp,$conn,$parsa,$parsa2,$keydata,$keyvers) {
$count = count(explode("+", $datavers)); // conto gli elementi nell'eventuale array, non so a priori se lo è
$check = check_count($count); //check_count verifica se le date inserite sono più di una
if(!$check) {
$explode= explode_versamenti($datavers); //il nome autospiega
echo "explode vale ";print_r($explode); //stampo l'array che ne viene
foreach ($explode as $data) {
$data1 = explode("/",$data); //separo gli elementi della data
$data2 = implode ("-", array_reverse($data1)); //ribalto gli elementi per formattare bene la data
$data3[]=$data2; //salvo anno,mese,giorno in un altro array
}
foreach ($data3 as $insert) { // devo inserire le due date in due insert separati. Ecco perchè il foreach
$parsa[$keydata] = $insert; //LINEA 507 qui inserisco la data "raddrizzata" e passo $keydata che è il motivo dell'errore.
$parsa[$keyvers] = Centesimi($evers[$keyvers])/$count; //
Versamenti_insert ($parsa,$conn);
}
} else { //se il primo count trova una sola data, procedo direttamente all'inserimento
$parsa[$keyvers] = Centesimi($parsa[$keyvers]);
Versamenti_insert($parsa,$conn);
}
}
//$parsa è un array che nasce altrove dalla combinazione titolo/valore di un csv.
IMPLEMENTO
Codice PHP:
Versamenti_process($parsa['DATA VERS 1'], $parsa['E VERS 1'], $combine, $versamenti1, $temp1, $conn, $parsa, $parsa2,'DATA VERS 1', 'E VERS 1');