Περισσότερα
Αναζήτηση πολυδιάστατου πίνακα PHP με βάση την τιμή
Έχω έναν πίνακα όπου θέλω να αναζητήσω το uid
και να πάρω το κλειδί του πίνακα.
Παραδείγματα
Έστω ότι έχουμε τον ακόλουθο δισδιάστατο πίνακα:
$userdb = array(
array(
'uid' => '100',
'name' => 'Sandra Shush',
'pic_square' => 'urlof100'
),
array(
'uid' => '5465',
'name' => 'Stefanie Mcmohn',
'pic_square' => 'urlof100'
),
array(
'uid' => '40489',
'name' => 'Michael',
'pic_square' => 'urlof40489'
)
);
Η κλήση της συνάρτησης search_by_uid(100)
(uid του πρώτου χρήστη) θα πρέπει να επιστρέφει 0
.
Η κλήση της συνάρτησης search_by_uid(40489)
θα πρέπει να επιστρέφει 2
.
Δοκίμασα να φτιάξω βρόχους, αλλά θέλω έναν κώδικα που να εκτελείται γρηγορότερα.
291
3
Αυτό θα λειτουργήσει. Θα πρέπει να το καλέσετε ως εξής:
Είναι σημαντικό να γνωρίζετε ότι αν χρησιμοποιείτε τον τελεστή
===
οι συγκρινόμενοι τύποι πρέπει να είναι ακριβώς ίδιοι, σε αυτό το παράδειγμα πρέπει να αναζητήσετεstring
ή απλά να χρησιμοποιήσετε==
αντί για===
.Με βάση την απάντηση angoru. Σε μεταγενέστερες εκδόσεις της PHP (
>= 5.5.0
) μπορείτε να χρησιμοποιήσετε το one-liner.Εδώ είναι η τεκμηρίωση: http://php.net/manual/en/function.array-column.php.
Με βάση την εξαιρετική απάντηση του Jakub's, εδώ είναι μια πιο γενικευμένη αναζήτηση που θα επιτρέπει το κλειδί να καθοριστεί (όχι μόνο για uid):
Χρήση:
$results = searcharray('searchvalue', searchkey, $array);
Ξέρω ότι αυτό έχει ήδη απαντηθεί, αλλά το χρησιμοποίησα και το επέκτεινα λίγο περισσότερο στον κώδικά μου, ώστε να μην χρειάζεται αναζήτηση μόνο με βάση το uid. Απλά θέλω να το μοιραστώ για όποιον άλλο μπορεί να χρειαστεί αυτή τη λειτουργικότητα.
Εδώ'είναι το παράδειγμά μου και παρακαλούμε να έχετε κατά νου ότι αυτή είναι η πρώτη μου απάντηση. Έβγαλα τον πίνακα παραμέτρων επειδή χρειαζόμουν μόνο αναζήτηση σε έναν συγκεκριμένο πίνακα, αλλά θα μπορούσατε εύκολα να τον προσθέσετε. Ήθελα ουσιαστικά να κάνω αναζήτηση με βάση περισσότερα από το uid.
Επίσης, στην περίπτωσή μου μπορεί να υπάρχουν πολλαπλά κλειδιά που πρέπει να επιστραφούν ως αποτέλεσμα της αναζήτησης από άλλα πεδία που μπορεί να μην είναι μοναδικά.
Αργότερα, κατέληξα να γράψω αυτό για να μπορέσω να αναζητήσω μια άλλη τιμή και ένα συσχετιστικό κλειδί. Έτσι, το πρώτο μου παράδειγμα σας επιτρέπει να αναζητήσετε μια τιμή σε οποιοδήποτε συγκεκριμένο συσχετιστικό κλειδί και να επιστρέψετε όλες τις αντιστοιχίες.
Αυτό το δεύτερο παράδειγμα σας δείχνει πού μια τιμή ('Taylor') βρίσκεται σε ένα συγκεκριμένο συσχετιστικό κλειδί (first_name) ΚΑΙ μια άλλη τιμή (true) βρίσκεται σε ένα άλλο συσχετιστικό κλειδί (employed), και επιστρέφει όλες τις αντιστοιχίες (Keys where people with first name 'Taylor' AND are employed).
Χρήση της συνάρτησης
Αποτέλεσμα