2

私は多次元配列を持っています:

    Array
(
    [0] => Array
        (
            [Id] => 1
            [MTime_Id] => 1
            [MName] => Breakfast
            [DName] => Other Cereals
            [IName] => 
            [Date] => 2013-02-05
        )

[1] => Array
    (
        [Id] => 1
        [MTime_Id] => 1
        [MName] => Breakfast
        [DName] => Porridge
        [IName] => Oats,Milk,Sugar
        [Date] => 2013-02-06
    )

[2] => Array
    (
        [Id] => 1
        [MTime_Id] => 1
        [MName] => Breakfast
        [DName] => Porridge
        [IName] => Oats,Milk,Sugar,Oats,Milk,Sugar
        [Date] => 2013-02-05
    )

)

そして、これをフィルタリングするために一意の配列を使用しようとしています

 [IName] => Oats,Milk,Sugar,Oats,Milk,Sugar

私は運がありません。重複をフィルタリングするにはどうすればよいですか?

乾杯。

4

3 に答える 3

1

IName入力をフィルタリングするため、フィールドに余分なスペースがない場合は、フィルタリングに次のような単純なものを使用できます。

$array[2]['IName'] = implode(',', array_unique(explode(',', $array[2]['IName'])));
于 2013-02-07T15:22:05.287 に答える
0

問題は、配列 2 の Oats,Milk,Sugar を IName の要素として、配列 3 に Oats,Milk,Sugar,Oats,Milk,Sugar があることです。これは同じではありません!

"Oats,Milk,Sugar"=="Oats,Milk,Sugar,Oats,Milk,Sugar" (または "Oats,Milk,Sugar".equals("Oats,Milk,Sugar,Oats,Milk,Sugar")) は間違い。

一意にしたい場合は、単一の結果を爆発させてから一意にするか、個別のフィールドに単一の値を保存する必要があります...

ところで:多次元配列から重複を削除する方法へのリンクは次のとおりですPHPで多次元配列から重複値を削除する方法

于 2013-02-07T15:12:37.800 に答える
0

そのための関数が存在するかどうかはわかりません。ここに簡単な解決策があります。配列をループして各値の結果を取得し、結果を分解して配列に挿入できます。次に、array_unique 関数を使用します。これを試して:

$result = array();
foreach($arrays as $array)
{
    $tmp = $array['IName'];
    $tmp2 = explode(',',$tmp);
    foreach ($tmp2 as $t)
    {
        $result[]=$t;
    }
}
$array_unique = array_unique($result);
于 2013-02-07T15:13:27.280 に答える