0

サブ配列インデックスによって配列を一意にする状況にあります。このコードを参照して、これを解決するのを手伝ってください。

    $user=Array(
       [1]=>Array(
                 username => Sujith,
                 email=>someone@example.com,
                 [address] => Array(
                    [address_id] => 1227
                    [city] => Ayoor
                    [state] => Kerala
                    [Country] => India
                 )
      )
     [2]=>Array(
         username => Ajith,
         email=>someone2@example.com,
         [address] => Array(
            [address_id] => 1227
            [city] => Ayoor
            [state] => Kerala
            [Country] => India
        )
     )
     [3]=>Array(
         username => Akhil,
         email=>someone3@example.com,
         [address] => Array(
            [address_id] => 1228
            [city] => Kollam
            [state] => Kerala
            [Country] => India
        )

    )
 )

address.address_id で一意にしたいので、結果の配列は

    $user=Array(
           [1]=>Array(
                     username => Sujith,
                     email=>someone@example.com,
                     [address] => Array(
                        [address_id] => 1227
                        [city] => Ayoor
                        [state] => Kerala
                        [Country] => India
                     )
          )
         [3]=>Array(
             username => Akhil,
             email=>someone3@example.com,
             [address] => Array(
                [address_id] => 1228
                [city] => Kollam
                [state] => Kerala
                [Country] => India
            )

        )
     )

つまり、アドレスごとに1ユーザー..これを解決するのを手伝ってください..

4

5 に答える 5

1

すでに発生した$user配列とunset()ユーザーをループします。address_id

補助配列を使用して、発生した を追跡できますaddress_id

$addresses = array();
foreach ($user as $key => $value) {
    $id = $value['address']['address_id'];
    if (in_array($id, $addresses)) {
        unset($user[$key]);
    } else {
        $addresses[] = $id;
    }
}
unset($addresses);
于 2014-03-14T07:41:49.323 に答える
0
   $unique_array = array();
   $address_id_accumulator = array();
    foreach ($user as $k => $v) {         
        if ( !in_array( $v['address']['address_id'], $address_id_accumulator) ){
            $unique_array[$k] = $v;
        }
        $address_id_accumulator[] = $v['address']['address_id'];         
    }

あなたの $user 配列はここでの入力です。$unique_array は、一意のアドレス ID を持つ $user 配列になります。

于 2014-03-14T10:00:45.547 に答える
0
$tmpArray = array();
$newArr = array();
foreach($users as $user)
{

if(!in_array($user['address']['address_id'],$tmpArray))
  $newArr[] = $user;
$tmpArray[] = $user['address']['address_id']
}
var_dump($newArr);
于 2014-03-14T07:40:56.267 に答える
-2

あなたが望むことを明示的に行うネイティブPHP関数はありませんが、次のことができます: - 関数を所有していますか?これには2分かかります - array_filter()を使用します

于 2014-03-14T07:37:12.620 に答える