2010-11-18 11 views
2

こんにちは、私はこの配列を持って言うことができますこれは次のようになります。それは私がFALSE与えチェック(空でない場合)

つ以上のテキストエリアが空白になっている場合(許可されている)という事実を除いて正常に動作します
if (count(array_unique($check_post)) < count($check_post)) 
    echo "Duplicate"; 
else 
    echo "NO Duplicate"; 

。私が欲しいもの

(count(array_unique())

の配列の空の値がところで私はempty()とし、array_values($check_post)で試してみましたが、私はそれを回避カント考慮しないことです。

ありがとうございます!必要な説明を求めてください。

まあ
if (count(array_unique(array_diff($check_post,array("")))) < count(array_diff($check_post,array("")))) 

答えて

8

最初にエントリ。

$non_empty_check_post = array_filter($check_post, create_function('$item', 'return !empty($item);'); 

if (count(array_unique($non_empty_check_post)) < count($non_empty_check_post)) { 
    echo "Duplicate"; 
} else { 
    echo "NO Duplicate"; 
} 
+0

- 私はそれを試してみます!ありがとう!! – Trufa

+0

私はOPは左の数量に空きがあるが、右の数量には寄付したくないと思います –

+0

空の値があると、彼はいつも "重複"します。私はそれが彼が望んだものだとは思わない。 – AndreKR

1
if (count(array_unique(array_filter(function(x) {return !empty(x)}, $check_post)) < count($check_post)) 
    echo "Duplicate"; 
else 
    echo "NO Duplicate"; 
2

あなたが言うように、あなたは空を除去する必要性を持っているのに、あなたがそれを持っている方法は、罰金です:あなたはarray_diff()を追加することができます比較から、すべての空の値を削除するには

+2

+1。しかし、空白(または 'false'と評価される項目)を削除したいときには' array_filter'にコールバック関数を与える必要はありませんマニュアルは "コールバックが与えられなければ、FALSEに等しい入力のすべての項目は削除されます。 ":) – netcoder

+0

@netcoder非常に真実! array_filter($ check_post)で十分です。 – Orbling

2

あなたの配列から空白アウトフィルタ:

function no_blanks($val) { 
    // Do not use empty() here if you don't consider the string "0" as blank 
    return trim($val) !== ''; 
} 

$check_post = array_filter($check_post, 'no_blanks'); 

if (count(array_unique($check_post)) < count($check_post)) 
    echo "Duplicate"; 
else 
    echo "NO Duplicate"; 
+0

+1。しかし、空白(または 'false'と評価される項目)を削除したいときは、' array_filter'にコールバック関数を与える必要はありません。 Manualは "コールバックが与えられていなければ、FALSEに等しい入力のすべてのエントリは削除されます。" :) – netcoder

+0

@netcoder:私のコールバックは空の文字列だけを厳密にチェックします。なぜなら、数字のゼロを含む文字列はOPの意図に反する可能性のある 'array_filter()'によってパージされるからです。私は以前に投稿した別の答えで 'array_filter()'を使用しました:) – BoltClock

+0

ああ、あなたがここで何をしたのか分かります。意味をなさない! – netcoder