Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it L'avatar di blob696
    Registrato dal
    Feb 2007
    Messaggi
    119

    controllo array con chiavi uguali

    salve a tutti

    qualcuno sa indicarmi una funzione che controlla se in un array ci sono chiavi uguali?

    mi serve perché le chiavi vengono inserite attraverso un form, quindi dovrei avvertire l'utente con la scritta "attenzione hai inserito due valori uguali"

    ringrazio in anticipo

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Non puoi controllare direttamente i dati provenienti dal form ed eseguire le operazioni sull'array solo se non ci sono dati che generano chiavi uguali?
    Spiega bene come deve funzionare questa cosa che hai in mente: un esempio di dati in arrivo dal form?

    Ricorda che in un array non possono esserci chiavi uguali, in caso di chiavi uguali, viene sovascritto il vecchio dato con il nuovo, non viene aggiunta una chiave uguale ad una già esistente.

  3. #3
    Utente di HTML.it L'avatar di blob696
    Registrato dal
    Feb 2007
    Messaggi
    119
    Si è vero, già a priori l'array è senza chiavi uguali, perchè come dici tu : in caso di chiavi uguali, viene sovascritto il vecchio dato con il nuovo.
    In pratica nei campi del form che poi diventeranno le chiavi dell'array, l'utente dovrà inserire delle date.

    I campi sono sei, ma non è obbligatorio riempirli tutti.

    ho provato ad inserire il seguente controllo nel form:
    if($_POST['data_1'] == $_POST['data_2'] OR $_POST['data_1'] == $_POST['data_3'] OR $_POST['data_1'] == $_POST['data_4'] OR $_POST['data_1'] == $_POST['data_5'] OR $_POST['data_1'] == $_POST['data_6'] OR $_POST['data_2'] == $_POST['data_3'] OR $_POST['data_2'] == $_POST['data_4'] OR $_POST['data_2'] == $_POST['data_5'] OR $_POST['data_2'] == $_POST['data_6'] OR $_POST['data_3'] == $_POST['data_4'] OR $_POST['data_3'] == $_POST['data_5'] OR $_POST['data_3'] == $_POST['data_6'] OR $_POST['data_4'] == $_POST['data_5'] OR $_POST['data_4'] == $_POST['data_6'] OR $_POST['data_5'] == $_POST['data_6']){$error[] = "ci sono date uguali</br>";}

    Il problema stà però nei campi vuoti, se l'utente lascia due campi vuoti mi vengono riconosciuti come uguali e viene trascritto l'errore.

    dovrei inserire:

    if(!empty($_POST['data_1'] AND $_POST['data_1'] == $_POST['data_2'] ecc ecc,

    ma si viene a creare un casino.
    dovrei creare un metodo più semplice.
    spero di essermi spiegato bene.
    grazie

  4. #4
    Utente di HTML.it
    Registrato dal
    Feb 2014
    residenza
    Voltati
    Messaggi
    913
    Potresti prima creare un'array "parziale"e poi ciclarlo:
    (è solo una bozza)
    Codice PHP:
    $parziale = array();
    for (
    $i 1$i <= 6$i++) {
        if (isset(
    $_POST["data_" $i])
            && 
    $_POST["data_" $i] != ""
        
    ) {
            
    $parziale[] = $_POST["data_" $i];
        }
    }

    $uguali false;

    for (
    $i 0$i count($parziale) && !$uguali$i++) {
        for (
    $x 0$X count($parziale) && !$uguali$x++) {
            if (
    $x != $i
                
    && $parziale[$i] == $parziale[$x]
            ) {
                
    $uguali true;
            }
        }
    }

    /* Se $uguali è uguale a true vuole dire che due dei valori non vuoti inseriti sono uguali, altrimenti è tutto ok */ 
    No

  5. #5
    Quote Originariamente inviata da blob696 Visualizza il messaggio
    salve a tutti
    qualcuno sa indicarmi una funzione che controlla se in un array ci sono chiavi uguali?

    Quello che controlli tu non sono chiavi ma valori.
    Usa array_filter() per eliminare gli elementi vuoti e poi array_unique().
    Se l'array risultante ha la stesso numero di elementi di quello preso come argomento(quello filtrato), allora tutti i dati sono diversi.

  6. #6
    Utente di HTML.it L'avatar di kingpin
    Registrato dal
    May 2014
    residenza
    London, UK
    Messaggi
    30
    Quote Originariamente inviata da blob696 Visualizza il messaggio
    qualcuno sa indicarmi una funzione che controlla se in un array ci sono chiavi uguali?
    In PHP non puoi avere array con chiavi uguali. https://eval.in/156318
    Sono sicuro che intendevi dire valori uguali.


    Quote Originariamente inviata da W Thunderbird
    Usa array_filter() per eliminare gli elementi vuoti e poi array_unique().

  7. #7
    Io modificherei gli input del form.

    attualmente avrai una serie di input così:
    codice:
    <input name="data_1" type="text" />
    <input name="data_2" type="text" />
    <input name="data_3" type="text" />
    <input name="data_4" type="text" />
    <input name="data_5" type="text" />
    <input name="data_6" type="text" />
    Al contrario è meglio cambiarli così
    codice:
    <input name="data[]" type="text" />
    <input name="data[]" type="text" />
    <input name="data[]" type="text" />
    <input name="data[]" type="text" />
    <input name="data[]" type="text" />
    <input name="data[]" type="text" />
    A quel punto nel ricevere gli input compilati farai un controllo senza pasticci
    Codice PHP:
    if(countarray_unique$_POST['data'] ) )!=6){ echo'ci sono duplicati'; } 
    http://www.miniscript.it
    Se ti sono stato di aiuto in qualche modo in questo forum iscriviti alla fan page di Miniscript - il mio blog di programmazione web.

  8. #8
    Utente di HTML.it L'avatar di blob696
    Registrato dal
    Feb 2007
    Messaggi
    119
    grazie a tutti.

    tampertools funziona cosi per come lo hai postato, ho solo corretto una X maiuscola con minuscola.

    In effetti non posso controllare l'array, quindi il titolo della discussione doveva essere: controllo form con valori uguali.

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.