Bir diziye yalnızca benzersiz değerleri ekleme

5 Cevap php

Ben onlar meydana amacıyla bir diziye itiyorum değerleri bir dizi var

$valsArray = array(); 

//I process each value from a file (code removed for simplicity) 
//and then add into the array 
$valsArray[] = $val; 

O yok, sadece değer ({[) (0]} gibi) eklenen alır nerede nasıl yerine bir ilişkisel diziye bu kapatırım. O 1 ile ($value of associative array) onun sayısını artırmak var eğer. Ben şimdi ne yapıyorum karşılaştırıldığında bu değerleri işleme daha verimli bir yol bulmaya çalışıyorum.

5 Cevap

Sizin değerleriniz yoluyla size döngüsü olarak aşağıdakileri yapabilirsiniz:

isset( $valsArray[$val] ) ? $valsArray[$val]++ : $valsArray[$val]=1;

Örnek:

$valsArray=array();

$val="foo";
isset($valsArray[$val])?$valsArray[$val]++:$valsArray[$val]=1;
$val="foo";
isset($valsArray[$val])?$valsArray[$val]++:$valsArray[$val]=1;
$val="bar";
isset($valsArray[$val])?$valsArray[$val]++:$valsArray[$val]=1;

print_r($valsArray);

alacak:

Array ( [foo] => 2 [bar] => 1 ) 
@$valsArray[$val]++;

sizin için bunu yapmalıyız. Yeni girişler 1 değerine sahip bir anahtar olarak ekledi almak, mevcut kayıtlar onların değeri artırılır olsun. @ Bu yeni bir değer karşılaştığında her zaman atılan bir E_NOTICE önler.

$ ValsArray = array_unique ($ valsArray);

Siz sadece $valsArray = array_unique($valsArray); ekleyerek bittiğinde? Yoksa doğru sırayla anahtarları tutmak gerekiyor?

Çalışırken aşağıdaki belgelerine bakarak

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