Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2010
    Messaggi
    80

    Php - Controllo Array In Una Volta

    Salve, vorrei chiedervi una cosa, mi sono letto le varie guide relative agli array, come costruirli, inserire o cancellare un file ordinarli ecc, io vorrei sapere se è possibile in un botto solo far verificare che ogni elemento dell'array sia maggiore di una variabile. mi spiego meglio, io ho un form che passa alcuni campi di ricerca da una tabella, la query che esce fuori viene estratta riga per riga, questa riga (o meglio l'elemento NOME) di questa riga diventa la clausola per la ricerca in un'altra tabella, ora da questa seconda query io ricavo più di un risultato e lo metto in un array. Prima di stampare il risultato finale della query dovrei fare una verifica di questo tipo

    If (array[0], and array[1], and .... > $data)
    esegui
    print riga estratta

    else niente


    Avevo provato con la forma IN (array), ma questa equivale a OR, e nel mio caso non funziona.

    Suggerimenti?

  2. #2

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2010
    Messaggi
    80
    Grazie n0t, ancora una cosa, non credo di aver capito bene come funziona

    Io mi creo una funzione che chiamo maggiore

    function maggiore ($data)

    A cui passo un solo parametro $data, e poi cosa scrivo nella funzione

    > $data????

    e ancora quando io faccio array_walk, gli passo l'array e il nome funzione tipo

    array_walk (array, 'maggiore'), e questo restituisce true o false, quindi in pratica io dovrei memorizzare il risultato in una variabile e poi verificare se è true (allora gli faccio stampare il risultato) o false (e allora non gli faccio fare niente), giusto?

  4. #4
    Dipende da cosa intendi per "in un botto solo". In questo caso io userei un banalissimo ciclo foreach, array_walk() mi sembra meno indicata perche' devi tenere traccia di un'informazione che va oltre il singolo elemento dell'array; ovviamente si puo' fare ma devi usare una variabile globale.

  5. #5
    Originariamente inviato da k.b
    Dipende da cosa intendi per "in un botto solo". In questo caso io userei un banalissimo ciclo foreach, array_walk() mi sembra meno indicata perche' devi tenere traccia di un'informazione che va oltre il singolo elemento dell'array; ovviamente si puo' fare ma devi usare una variabile globale.
    Può passare una terza variabile per riferimento alla callback, inizializzarla a NULL e poi cambiargli valore nel caso un elemento dell'array non rientri nei parametri, alla fine, checkare la variabile e vedere che valore ha ?

  6. #6
    No, non lo può fare

  7. #7
    Utente di HTML.it
    Registrato dal
    Feb 2010
    Messaggi
    80
    Grazie per le risposte, stò ancora provando il metodo di n0t, anche se devo capire bene come funziona, per il momento sto provando, provando, provando, provando ecc, ecc (vecchia citazione di Non ci resta che piangere).

    Per n0t

    Ma quello che ho scritto io è giusto?

    In realtà la funzione maggiore mi ha richiesto un'altro argomento prima di > $data, per il momento io ho inserito un'altra variabile, rimane il fatto che con array_walk dovrei dire che l'nesimo elemento dell'array diventa quella nuova variabile per confrontarlo con tutti gli altri, io mi sono visto la guida (ufficiale) e non mi è ben chiaro il funzionamento, poi mi sono cercato le guide in italiano (che sono, tradotte, la stessa cosa di quella ufficiale) e allora li so che non ci ho capito proprio niente.....

    Per k.b

    Il problema è che oltre al ciclo foreach io dovrei inserire anche un if, per controllare ogni volta se l'espressione è verificata, in sostanza quello che devo fare io è:

    Prendere il primo elemento dell'array (che è una data) e confrontarlo con il campo $data, se è maggiore continuo con il secondo altrimenti no. Non sarebbe complicato se non fosse che io non conosco preventivamente il numero di elementi dell'array (o meglio possono essere 1,3,5,7) per cui io dovrei scrivermi 7 condizioni di if, e altrettanti controlli di non essere arrivato in fondo all'array. La mia non è che sia pigrizia è che piano piano e con molta fatica sto' cercando di pulire un pò tutti i miei codici e sostituire con espressioni un po' più eleganti i miei cicli e sottocicli di if, while, foreach..

  8. #8
    Utente di HTML.it
    Registrato dal
    Feb 2010
    Messaggi
    80
    Ti prego n0t non ridere....

    function maggiore ($data){
    $pippo > $data;
    };


    $controllodata = array();
    ....
    .....

    $verifichiamo = array_walk ($controllodata, 'maggiore');
    if ($verifichiamo == true)
    {
    extract ($linea);
    echo "<td>$NOME</td>";
    echo "<td>$IMPORTO_GLOBALE</td>";
    echo "<td>$IA</td>";
    echo "<td>$IB</td>";
    echo "<td>$IC</td>";
    echo "<td>$ID</td>";
    echo "<td>$IE</td>";
    echo "<td>$IF</td>";
    echo "<td>$IG</td>";
    echo "<td>$IIIA</td>";
    echo "<td>$IIIB</td>";
    echo "<td>$IIIC</td>";
    echo "<td>$VIA</td>";
    echo "<td>$VIB</td>";
    echo "<td>$VIII</td></tr>";
    }


    Quante stupidaggini ho scritto in dieci righe di codice?????

  9. #9
    Originariamente inviato da Fackie76
    Per k.b

    Il problema è che oltre al ciclo foreach io dovrei inserire anche un if, per controllare ogni volta se l'espressione è verificata, in sostanza quello che devo fare io è:

    Prendere il primo elemento dell'array (che è una data) e confrontarlo con il campo $data, se è maggiore continuo con il secondo altrimenti no. Non sarebbe complicato se non fosse che io non conosco preventivamente il numero di elementi dell'array (o meglio possono essere 1,3,5,7) per cui io dovrei scrivermi 7 condizioni di if, e altrettanti controlli di non essere arrivato in fondo all'array. La mia non è che sia pigrizia è che piano piano e con molta fatica sto' cercando di pulire un pò tutti i miei codici e sostituire con espressioni un po' più eleganti i miei cicli e sottocicli di if, while, foreach..
    Ma no, un ciclo si fa proprio per evitare ennemila if.

    Codice PHP:
    $valori = array( ... quello che deve contenere ... );
    $errore 0;

    foreach ( 
    $valori as $valore ) {
        if ( 
    $valore $data ) { // o altro controllo adatto alle date
            
    $errore 1;
            break;
        }
    }

    if ( 
    $errore ) {
        echo 
    "E' presente almeno un valore che non supera il test";


  10. #10
    Utente di HTML.it
    Registrato dal
    Feb 2010
    Messaggi
    80
    Ciao k.b e grazie per la risposta e la cortesia, si lo so che il ciclo serve ad elimiare proprio nmila if, ma mi rimane un dubbio, non so se ho capito bene la sintassi del tuo ciclo.

    Io faccio partire il ciclo prendo il primo valore, lo confronto con data e se è maggiore assegno al controllo ($errore) 1, e poi mi servirebbe un'altra istruzione prima di interrompere il ciclo, ossia if $errore !=1 allora break, altrimenti lui deve continuare il ciclo e finire al secondo elemento, giusto???

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.