2011-12-07 12 views
0

私は[email protected]\nの形式のテキストファイルを持っています。私はexplode()の配列にデータを入れました。電話のみに基づいて重複する行(値)を削除するにはどうすればよいですか?私は、私が電話に基づいて、これはユニークな作りたい文字列の一部に基づいてPHP配列から重複した値を削除する方法

[email protected] 
[email protected] 

を避けたいです。

+1

あなたが "エド" と "エディ" の情報を保持する必要がありますか? – rdlowrey

+0

レコードの1つを保持するだけでOKです。 – Googlebot

答えて

4
<?php 
$result = array(); 
foreach($dataset as $input): 
    $parts = explode('@', $input); 
    $result[$parts[1]] = $parts[0]; 
endforeach; 
$result = array_flip($result); 
+0

+1賢い考え。 – AlienWebguy

+0

+1それに同意します。 – rdlowrey

+0

これは、フォーマットとしてYYYY-MM-DD-HH-MM-SSを持つ複数のディレクトリが存在する各日の最新のディレクトリを見つけるためにもうまくいきました。 '$ directory [$ directory] ​​= substr($ directory、0,10);'を使用して、日付がキーになり、最大番号の時間が最後に作成されるようにしました。 – doubleJ

2

あなたが名前を気にし、ちょうどあなたが(array_uniqueを行うその後、数字やダッシュではありませんリスト内のすべての文字を置き換えることができますユニークな番号の一覧をしたくない場合):

$arr = array(
    '[email protected]', 
    '[email protected]' 
); 

$arr = preg_replace('/[^\d\-]/', '', $arr); 
$arr = array_unique($arr); 

print_r($arr); 

数値が常にその形式(name @ number)であることが分かっている場合は、@Kenaniahの応答がうまく機能します。

1

用途:

$result = array(); 
foreach($arrayData as $data){ 
    $uniqueKey = strstr($data, '@');//@999-999-999 
    $result[$uniqueKey] = $data; 
} 

var_dump($result); 
関連する問題