5

Sto cercando di trovare un modo per lavorare con quelli che potrebbero essere array di grandi dimensioni. Quello che sto facendo è lavorare con l'API del grafico di facebook.PHP trova la chiave di indice dell'array multidimensionale per aggiornare l'array

Così, quando un utente si registra per un servizio che sto costruendo, memorizzo il loro ID di Facebook in una tabella del mio servizio. Il punto di questo è permettere a un utente che si iscrive al mio servizio di trovare amici dei propri che sono su Facebook e che hanno anche firmato il mio servizio per trovarsi l'un l'altro più facile.

Quello che sto cercando di fare è prendere l'oggetto che Facebook API restituisce per i dati /me/friends e passarlo a una funzione che ho creato una query sul mio DB per gli ID trovati nei dati FB che funziona bene . Inoltre, mentre tutto questo bit è in corso, ho una serie di semplici ID di Facebook che possono essere utilizzati in uno scenario in_array. Poiché la mia query restituisce solo l'ID di Facebook trovato corrispondente

Mentre questi dati si collegano da solo per creare la query, aggiorno anche l'oggetto per contenere un'altra coppia chiave/valore per articolo nell'elenco che è "are_friends"=> false Fino a questo punto funziona tutto liscio e relativamente veloce, e ho i risultati della mia query. Che sto facendo il giro.

Quindi sono in una parte in cui voglio evitare di avere un ciclo all'interno di un ciclo. È qui che arriva il bit in_array(). Da quando ho creato l'array di ID fc memorizzati ora posso passare in rassegna i miei risultati per vedere se c'è una corrispondenza, e in tal caso voglio prendere l'oggetto originale che ho aggiunto 'are_friends'=>false a e modificare quelli in quel set che corrispondono a "true" invece di false. Non riesco a pensare a un buon modo senza fare il ciclo sull'array originale all'interno del loop che è l'array dei risultati.

quindi spero che qualcuno possa aiutarmi a venire con una soluzione di qui senza quel ciclo secondario

L'array fino a questo punto che inizia come gli sguardi originali come

Array(
    [data](
      [0] => array(
         are_fb_friends => false 
         name => user name 
         id => 1000 
         ) 
      [1] => array(
         are_fb_friends => false 
         name => user name 
         id => 2000 
         ) 
      [2] => array(
         are_fb_friends => false 
         name => user name 
         id => 3000 
         ) 
      ) 
    ) 

Come per richiesta

Questa è la mia logica codice corrente, che sto cercando di descrivere sopra ..

+0

puoi pubblicare il tuo codice corrente a doppio loop, non riesco a capire perfettamente quello che ti serve –

+0

modificato il mio post per riflettere anche il codice – chris

risposta

5

Per cercare un valore e ottenere la chiave in una matrice, è possibile utilizzare array_search function che restituisce la chiave dell'elemento.

$found_key = array_search($needle, $array); 

Per una ricerca array multidimensionale in look PHP a https://stackoverflow.com/a/8102246/648044.

Se sei preoccupato per l'ottimizzazione, penso che devi provare a utilizzare una query su un database (con indicizzazione corretta).

A proposito, stai utilizzando lo Facebook Query Language? Se non provarlo, è utile.

+0

Attualmente non sto usando l'FBQL, quello che stiamo facendo ha bisogno di accessibilità ad un punto attraverso dispositivi che alla mia attuale conoscenza non funzionerà per noi (potrei sbagliarmi). Ma in generale le API grafiche ci servono per la maggior parte dei nostri bisogni generali per quanto riguarda le cose relative a FB. – chris

+0

In una nota a margine, 'array_search()' restituirà l'indice dell'array all'interno dell'array nella sua ricerca? o l'indice all'interno dell'array trova la ricerca. In altre parole sarà dall'esempio sopra se cerco 3000 restituirà un "2" o "id" – chris

+0

@chris ho aggiornato la risposta. La ricerca di array – Guglie

Problemi correlati