2010-04-05 15 views

risposta

33

Citando la pagina di manuale di array_search():

restituisce la chiave per l'ago se è trova nella matrice, FALSE altrimenti.


Il che significa che dovete usare qualcosa come:

$found = array_search($needle, $haystack); 

if ($found !== false) { 
    // do stuff 
    // when found 
} else { 
    // do different stuff 
    // when not found 
} 

Nota che ho usato l'operatore !==, che fa un confronto di tipo sensibile; vedi Comparison Operators, Type Juggling, e Converting to boolean per maggiori dettagli su quel ;-)

+5

'Nota Ho usato l'operatore! ==, che esegue un confronto sensibile al tipo - questo è esattamente il problema. 0 stava valutando il falso ... grazie –

+0

Prego :-) ;; Ho modificato la mia risposta per aggiungere collegamenti ad altre pagine rilevanti del manuale, btw :-) –

+0

grazie, sei un vero rock! –

1

Dalla documentazione:

Cerca in pagliaio per trovare ago e restituisce la chiave se viene trovato nell'array, FALSE in caso contrario.

3

se si sta solo controllando se il valore esiste, in_array è la strada da percorrere.

0

Secondo la documentazione ufficiale al http://php.net/manual/en/function.array-search.php:

Attenzione Questa funzione può restituire il Booleano FALSE, ma può anche restituire un valore non booleano valutato come FALSE. Si prega di leggere la sezione su booleani per ulteriori informazioni. Utilizzare l'operatore === per testare il valore di ritorno di questa funzione.

Vedi questo esempio:

$foundKey = array_search(12345, $myArray); 
if(!isset($foundKey)){ 
    // If $myArray is null, then $foundKey will be null too. 
    // Do something when both $myArray and $foundKey are null. 
} elseif ($foundKey===false) { 
    // $myArray is not null, but 12345 was not found in the $myArray array. 
}else{ 
    // 12345 was found in the $myArray array. 
}