Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    208

    Warning ma va tutto liscio. Come eliminarlo?

    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'); 
    Ultima modifica di Korenaar; 21-12-2014 a 17:58

  2. #2
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    208
    Niente, ignorate tuttissimo.

    Il giro di variabili mi ha fuso il cervello, l'errore è qui

    Codice PHP:

    $parsa
    [$keyvers] = Centesimi($evers[$keyvers])/$count
    che doveva ovviamente diventare

    Codice PHP:

    $parsa
    [$keyvers] = Centesimi($parsa[$keyvers])/$count
    e infatti ora niente notice e dati a posto (mentre prima non lo erano del tutto).

    Sorry, potete chiudere!


  3. #3
    credo che il problema sia che la chiave di un array non può essere con " " spazi all'interno, forse anche maiuscola (visto che il maiuscolo è riservato per le costanti). Rivedi le chiavi dei tuoi array.
    Questa volta, più che un voto.. è favoreggiamento.

  4. #4
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    208
    Si, pensavo anche io che il problema potesse essere quello. In realtà quella funzione viene chiamata con una bella serie di variabili da gestire e avevo semplicemente sbagliato l'assegnazione delle variabili senza rendermene conto.

    Una volta modificata la variabile espressa in quella riga, sono spariti i warning e i dati girano perfettamente. Credo che la storia dei maiuscoli e degli spazi sia solo una (giustissima) convenzione. Ma sto combattendo con un mega csv da importare, tra l'altro su una versione ancora non definitiva, quindi sto prendendo nota di cosa va modificato nell'export definitivo senza operare eccessivamente sul file fisico o non ne esco più.

    Grazie dell'intervento comunque

  5. #5
    Se non vuoi eliminare il Warning ma solo non visualizzarlo a schermo potresti modificare i parametri di PHP.INI , il file di configurazione di php che trovi nella sua cartella...

    leggi qua come puoi modificarlo

    <?php

    // Turn off all error reporting
    error_reporting(0);

    // Report simple running errors
    error_reporting(E_ERROR | E_WARNING | E_PARSE);

    // Reporting E_NOTICE can be good too (to report uninitialized
    // variables or catch variable name misspellings ...)
    error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE);

    // Report all errors except E_NOTICE
    error_reporting(E_ALL & ~E_NOTICE);

    // Report all PHP errors (see changelog)
    error_reporting(E_ALL);

    // Report all PHP errors
    error_reporting(-1);

    // Same as error_reporting(E_ALL);
    ini_set('error_reporting', E_ALL);

    ?>

  6. #6
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    208
    Grazie, molto molto interessante questa reply!

    Detto questo, HO RISOLTO! basta leggere il mio post pochi minuti dopo aver avviato il topic.
    grazie mille per l'interessamento comunque, questo tuo post riassuntivo sugli e-notice in generale è decisamente utile

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.