2012-01-16 11 views

risposta

8

Let $ item essere il prodotto la cui frequenza si sta verificando per dell'array, $ array sia la matrice che si sta cercando in

SOLUZIONE 1:.

$array_count = array_count_values($array); 
if (array_key_exists($item, $array_count) && ($array_count["$item"] > 1)) 
{ 
    /* Execute code */ 
} 

array_count_values ​​() restituisce un array utilizzando i valori dell'array input come chiavi e la loro frequenza in ingresso come valori (http://php.net/manual/en/function.array-count-values.php)

SOLUZIONE 2:

if (count(array_keys($array, $item)) > 1) 
{ 
    /* Execute code */ 
} 

Controllare questo http://www.php.net/manual/en/function.array-keys.php - "Se è specificato il valore di ricerca opzionale, vengono restituite solo le chiavi per quel valore"

+0

Potrebbe essere opportuno considerare l'istanza in cui '$ item' non esiste in' $ array'. – salathe

+0

Sì, grazie per averlo indicato. Aggiungerò quel caso. – Ninja

+0

Questo era quello che stavo cercando! Grazie mille!! –

1

forse ho capito male la tua domanda, ma forse questo è ciò che si neeed:

if (count($in_array) > count(array_unique($in_array))) 
{ 
EXECUTE CODE 
} 
+1

Questo non è corretto. Cosa succede se l'oggetto che si ripete non è quello che sta cercando? – Ninja

3

http://www.php.net/manual/en/function.array-keys.php

in_array solo restituisce un bool, quindi non si può contare. array_keys tuttavia restituisce un array di tutte le chiavi per un elemento nell'array, quindi controllando la lunghezza di quel risultato si otterrà se esiste più di una volta o meno.

+0

Questo non funzionerà in tutti i casi. Cosa succede se l'oggetto che si ripete non è quello che sta cercando? – Ninja

+0

@Ninja, perché non funziona? – salathe

+0

Scusa, ho frainteso quello che ha detto Gordon. Colpa mia. Si è reso conto che sta parlando del parametro del valore di ricerca nella funzione array_keys – Ninja

Problemi correlati