Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14
  1. #1

    Array_pop non funzionante(ultimo valore array)

    Salve, ho un normalissimo ciclo foreach che aggiunge dei valori ad una variabile:
    Codice PHP:
    if(!array_pop($valore_variabile)){
        
    $campi.= "$valore_variabile";
       }else{
        
    $campi.= "$fine";            

    Il problema è che non riesce a capire quale sia l'ultimo valore, stanpa sempre $valore_variabile o sempre $fine, per tutti gli elementi dell'array. Visto che la variabile deve andare in un campo mysql volevo capire come mai array_pop non funziona.
    Aspetto risposte!

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,098
    $valore_variabile è un array?
    - se sì: $campi = $valore_variabile è davvero ciò che vuoi fare? Ovvero fare in modo che $campi diventi un array con gli stessi elementi di $valore_variabile? Penso di no, perché .= su un array non ha senso.
    - se no: array_pop($valore_variabile) sarà sempre false perché appunto non ha a che fare con un array.

    Nell'if effettui il pop, ma l'elemento che estrai e togli dall'array va perso, non lo salvi da nessuna parte.
    Di nuovo, è davvero ciò che vuoi fare? Ovvero solamente eliminare l'ultimo elemento dell'array?

    Chi è $fine?

    Meglio se spieghi più dettagliatamente cosa vuoi fare e posti anche il codice di come generi l'array.
    Earth2: 3QCNSPFQUH

  3. #3
    Allora, $valore_variabile è: foreach($array as $variabile => $valore_variabile).
    $campi non è un array, è semplicemente una scritta, che parte come vuota e che aggiunge valori al suo interno se gli array soddisfano una certa condizione.
    $fine invece è uno spazio vuoto.
    Rispondendo alla tua domanda $capi non deve diventare un array, ma semplicemente disporre il contenuto dell'array che supera le condizioni precedenti come una frase(devono diventare gli elementi di una query, l'unico problema è che non riconoscendol'ultimo elemento lascia una virgola di troppo e non esegue la query).
    L'array è generato dai dati di una form, che vengono presi tipo post, esempio:
    codice:
    $nome = $_POST['nome'];
    $cognome = $_POST['cognome'];
    $array = array('nome' => "$nome", 'cognome' => "$cognome");
    Successivamente faccio un foreach con un unset sui valori che vengono passati nulli per toglierli dalla query(nella form alcuni campi sono disabled se riempiti, quindi il valore che passano è sempre nullo).
    Ultimo associo gli elementi per passarli alla query:
    Codice PHP:
    foreach ($array as $valore => $valore_variabile){
        if(
    $valore_variabile != ''){
            if(!
    array_pop($valore)){
                
    $campi.= "$valore='$valore_variabile', ";
            }else{
                
    $campi.= "$valore='$valore_variabile' ";            
                }
            }
        } 
    Ho riscritto tutto così come l'ho creato, ho cambiato i nomi di alcune variabili per far capire meglio. Ultima cosa: ho stampato i valori degli array e sono corretti, quindi l'errore è dentro il ciclo che non riesce a distringuere qual'è l'ultimo elemento passato.

  4. #4
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,337
    $valore non è un array.
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  5. #5
    IOn array pop al posto di $valore ho messo $array, se arrivano meno di due dati modificati funziona tutto, ma se ne arrivano di più crea i record successivi senza la virgola:
    Codice PHP:
            if(!array_pop($array)){
                
    $campi.= "$valore='$valore_variabile', ";
            }else{
                
    $campi.= "$valore='$valore_variabile' ";            
                }
            } 
    Questo stampa: a:1, b:2 c:3 oppure a:1 B:2, c:3,
    Mentre io vorrei stampare a:1, b:2 , c:3
    Sapete in cosa sbaglio?

  6. #6
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,098
    Tu ti stai impuntando con array_pop() perché starai cercando di modificare un qualche script che hai trovato in giro, ma secondo me non ti serve a niente.
    Codice PHP:
    $nome $_POST['nome'];
    $cognome $_POST['cognome'];
    $array = array('nome' => $nome'cognome' => $cognome);

    $campi '';
    foreach (
    $array as $key => $value)
    {
        
    $campi .= $key.' = '.$value.', ';
    }
    //rimuove gli ultimi 2 caratteri, ovvero l'ultima virgola e il seguente spazio
    $campi substr($campi,0,-2);

    echo 
    $campi
    Earth2: 3QCNSPFQUH

  7. #7
    Aspettate ho rivisto meglio la funzione: array_pop serve per togliere l'ultimo elemento di un array, mentre io voglio solo sapere solo se è l'ultimo o no. Che funzione devo usare considerando che mi serve acneh l'ultimo valore e non deve essere tagliato?

  8. #8
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,098
    Leggi la risposta che ti ho dato sopra.
    Earth2: 3QCNSPFQUH

  9. #9
    Originariamente inviato da Alhazred
    Tu ti stai impuntando con array_pop() perché starai cercando di modificare un qualche script che hai trovato in giro, ma secondo me non ti serve a niente.
    No no, sei fuori strada . La pagina me la sono creata da solo partendo da 0, tanto è vero che ci devo anche creare un'altra funzione controllo con javascript tramite return, e non l'ho ancora fatto perchè volevo finire prima per bene la parte php.
    Mi sono impuntato con array_pop perchè ho sbagliato a leggere la guida del php su php.net, ed ero convinto che mi dicesse solo qual'era l'ultimo array senza togliermelo, invece lo toglie....
    Ed ecco qui l'errore, ovvio che se me lo toglie e poi vado a stampare esce sempre una virgola di troppo, perchè manca l'ultimo elemento che deve essere senza virgola.
    Non trovo il comando però per sapere quale sia l'ultimo elemento di un array....


    P.S: Mi ero scordato che potevo rimuovere gli ultimi due caratteri, la tua soluzione sicuramente funzionerà, in quanto è più alla 'mano', però vorrei sapere lo stesso se una funzione come quella che ho chiesto esiste o meno in php.

  10. #10
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,098
    Hai provato il codice che ti ho scritto? Fa quello che ti serve?

    Non esiste una funzione che ti dice quale sia l'ultimo elemento di un array, al limite la devi creare tu usando count() per sapere il numero di elementi contenuti nell'array.
    Earth2: 3QCNSPFQUH

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 © 2021 vBulletin Solutions, Inc. All rights reserved.