rafinos Δημοσ. 8 Ιουλίου 2014 Share Δημοσ. 8 Ιουλίου 2014 Γεια σας παιδιά! Θέλω να τσεκάρω αν σε ένα array της javascript υπάρχουν διπλότυπα (δύο φορές η ίδια τιμή) και αν ναι να εμφανίσω τις τιμές που υπάρχουν παραπάνω από μία φορές.... Για παράδειγμα αν στον πίνακα έχω array("4","4","1","2","5","1","4")... Να εμφανιστούν το 4 και το 5 ... Ξέρει κανείς κάποιο τρόπο (και με jquery δεν υπάρχει θέμα). Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
StathisG Δημοσ. 8 Ιουλίου 2014 Share Δημοσ. 8 Ιουλίου 2014 Αν θες να αφαιρέσεις τα duplicates, τότε δες την unique. Αν θες απλά να τα εμφανίσεις (επιλέξεις) έχει διάφορους τρόπους. Δες ένα παράδειγμα εδώ. Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
rafinos Δημοσ. 8 Ιουλίου 2014 Μέλος Share Δημοσ. 8 Ιουλίου 2014 Βασικά περνάω την τιμή από μια λίστα με textboxes στον πίνακα για να τσεκάρω αν προσπαθεί να στείλει ο χρήστης δύο φορές την ίδια εγγραφή ... ώστε να μην τον αφήσω Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
StathisG Δημοσ. 8 Ιουλίου 2014 Share Δημοσ. 8 Ιουλίου 2014 Τότε μπορείς να χρησιμοποιήσεις την inArray. Αν η τιμή που ελέγχεις υπάρχει στον πίνακα θα σου επιστρέψει το index της, αλλιώς θα σου επιστρέψει -1, για παράδειγμα: var testArray = ['value1', 'value2', 'value4']; $.inArray('value1', testArray) //επιστρέφει 0 $.inArray('value2', testArray) //επιστρέφει 1 $.inArray('value3', testArray) //επιστρέφει -1 $.inArray('value4', testArray) //επιστρέφει 2 Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
rafinos Δημοσ. 8 Ιουλίου 2014 Μέλος Share Δημοσ. 8 Ιουλίου 2014 Πιθανότατα θα το κάνω με τον πρώτο τρόπο... βολεύει περισσότερο έτσι όπως τα έχω δομημένα! Ευχαριστώ πολύ! Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
StathisG Δημοσ. 8 Ιουλίου 2014 Share Δημοσ. 8 Ιουλίου 2014 Να 'σαι καλά. Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
rafinos Δημοσ. 20 Ιουλίου 2014 Μέλος Share Δημοσ. 20 Ιουλίου 2014 Έχω αυτό σε Php for($i=0; $i<count($_POST['choices']); $i++){ $choices[$i][0] = $_POST['choices'][$i]; $choices[$i][1] = $_POST['rates'][$i]; } *τα choices και τα rates έχουν ίδιο length και είναι σε αντιστοιχία οπότε μη σας μπερδεύει... Αυτό που θέλω είναι... Μετά το γέμισμα του πίνακα που κάνω παραπάνω ... αν στο [$i][0] υπάρχει η ίδια τιμή παραπάνω από μία φορές τότε να προστεθούν τα rates τους... δηλαδή [$i][1] = [$i][1] + [$i+x][1] και η τιμή που υπάρχει παραπάνω από μία φορά στον πίνακα να μείνει μόνο μία φορα. Καταλάβατε τι εννοώ γιατί έτσι όπως το είπα έγινε αχταρμάς Θέλω δηλαδή array_unique() σε δισδιάστατο πίνακα αλλά με πρόσθεση του δεύτερου κελιού... Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
geomagas Δημοσ. 20 Ιουλίου 2014 Share Δημοσ. 20 Ιουλίου 2014 Δήλωσε έναν νέο πίνακα πχ $uchoices. Για κάθε στοιχείο του $choices, αν υπάρχει στον $uchoices τότε συσσώρευσε (+=) το [1] του, αλλιώς βάλτο σαν νέο στοιχείο. 1 Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
defacer Δημοσ. 20 Ιουλίου 2014 Share Δημοσ. 20 Ιουλίου 2014 Γιατί να κάνεις πίνακες του στυλ [0 => choice, 1 => rate] αντί να κάνεις ένα μόνο πίνακα της μορφής [choice1 => rate1, ...]? Θα ήταν πολύ βολικότερο. Κατά τα άλλα γι' αυτό που θες η PHP δεν έχει τίποτα, οπότε είτε γράφεις μια γενικής χρήσης function για να κάνεις group by σε πίνακες είτε manually όπως λέει ο geomagas, πχ: $results = []; foreach ($_POST['choices'] as $i => $choice) { if (isset($results[$choice])) { $results[$choice] += $_POST['rates'][$i]; } else { $results[$choice] = $_POST['rates'][$i]; } } 1 Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
rafinos Δημοσ. 20 Ιουλίου 2014 Μέλος Share Δημοσ. 20 Ιουλίου 2014 Το παράδειγμα που μου γράφεις παραπάνω δημιουργεί πίνακα της μορφής που μου πρότεινες έτσι; Αν ναι... πως μπορώ να χρησιμοποιήσω την τιμή του key σαν μεταβλητή; έτσι; foreach($results as $key => $value){ bla bla bla } Και όταν θέλω την τιμή του key θα βάζω $key και το όταν θέλω το αντίστοιχω $rate το $value; ΟΚ!!!!!!!!!! Το έκανα ευχαριστώ πάααααααρα πολύ!!!!! Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
defacer Δημοσ. 20 Ιουλίου 2014 Share Δημοσ. 20 Ιουλίου 2014 Ναι. print_r($results) για να το διαπιστώσεις μόνος σου. 1 Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
alou Δημοσ. 21 Ιουλίου 2014 Share Δημοσ. 21 Ιουλίου 2014 Κατά τα άλλα γι' αυτό που θες η PHP δεν έχει τίποτα, οπότε είτε γράφεις μια γενικής χρήσης function για να κάνεις group by σε πίνακες είτε manually όπως λέει ο geomagas, πχ: $results = []; foreach ($_POST['choices'] as $i => $choice) { if (isset($results[$choice])) { $results[$choice] += $_POST['rates'][$i]; } else { $results[$choice] = $_POST['rates'][$i]; } } Αυτο δεν θα ηταν αρκετο σε οποιαδήποτε ανάλογη περίπτωση? (ρωτάω γιατί δεν είμαι σίγουρος αν κάποιες php versions ή error reporting settings παραπονεθούν..?) $results = []; foreach ($_POST['choices'] as $i => $choice) { $results[$choice] += $_POST['rates'][$i]; } Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
defacer Δημοσ. 21 Ιουλίου 2014 Share Δημοσ. 21 Ιουλίου 2014 Θα είχε το ίδιο τελικό αποτέλεσμα όσον αφορά τα $results αλλά θα έδινε E_NOTICE "undefined offset" την πρώτη φορά που συναντάει κάθε διαφορετικό $choice. Κώδικας που δίνει οποιοδήποτε notice ή warning αντικαθίσταται με άλλο ισοδύναμο που δεν δίνει. Τώρα που το σκέφτομαι πάντως θα ήταν πιο sexy να γίνει έτσι: $results = array_fill_keys($_POST['choices'], 0); foreach ($_POST['choices'] as $i => $choice) { $results[$choice] += $_POST['rates'][$i]; } 1 Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
rafinos Δημοσ. 21 Ιουλίου 2014 Μέλος Share Δημοσ. 21 Ιουλίου 2014 Θα είχε το ίδιο τελικό αποτέλεσμα όσον αφορά τα $results αλλά θα έδινε E_NOTICE "undefined offset" την πρώτη φορά που συναντάει κάθε διαφορετικό $choice. Κώδικας που δίνει οποιοδήποτε notice ή warning αντικαθίσταται με άλλο ισοδύναμο που δεν δίνει. Τώρα που το σκέφτομαι πάντως θα ήταν πιο sexy να γίνει έτσι: $results = array_fill_keys($_POST['choices'], 0); foreach ($_POST['choices'] as $i => $choice) { $results[$choice] += $_POST['rates'][$i]; } Σε αυτή τη περίτπωση όμως τι γίνεται με τα ίδια κλειδιά (που δεν τα θέλουμε); με την array_fill_keys() εξαλίφονται; Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
defacer Δημοσ. 21 Ιουλίου 2014 Share Δημοσ. 21 Ιουλίου 2014 Δε γίνεται σε ένα πίνακα να υπάρχουν ίδια κλειδιά, οπότε το αποτέλεσμα της array_fill_keys είναι το ίδιο με το να έγραφες π.χ. $arr = [0 => 42, 0 => 42]; Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα