1

購入リストを出力していますが、重複した注文の存在を自動的に強調表示したいと考えています。

配列は次のようになります。最初の 2 つの注文は、誤って重複して注文されたものです。それぞれの orderid は異なりますが、email と userid は同じままです。したがって、重複は電子メールおよび/またはユーザー ID で一致する必要がありますが、orderid では一致しません。

array
  0 => 
    array
      'orderid' => string '2009091008261662'
      'email' => string 'john@example.com'
      'userid' => string '53'
array
  1 => 
    array
      'orderid' => string '2009091008261048'
      'email' => string 'john@example.com'
      'userid' => string '53'
array
  2 => 
    array
      'orderid' => string '2009091008262025'
      'email' => string 'fred@example.com'
      'userid' => string '103'
array
  3 => 
    array
      'orderid' => string '2009091008272082'
      'email' => string 'tom@example.com'
      'userid' => string '392'

PHPで、特定の配列で同じ人からの重複注文を検索するにはどうすればよいですか?

上記を次のように出力したいと思います。

(テーブルにあるふりをする)

2009091008261662 - john@example.com - 53

2009091008261048 - john@example.com - 53

2009091008262025 - fred@example.com - 103

2009091008272082 - tom@example.com - 392

...基本的には、2 つ (またはそれ以上) の重複を強調表示するだけです。

4

6 に答える 6

0

注文配列の2つのパスが必要になります。しかし、それは一部の人が考えているよりも本当に簡単です。

$duplicateUserId = array();

// Mark user ID's with more than one order
foreach ( $orders as $order ) {
    $duplicateUserId[$order['userid']] = isset($duplicateUserId[$order['userid']]);
}

// Output each order
foreach ( $orders as $order ) {
    echo formatOrder($order, $duplicateUserId[$order['userid']]);
}

// Format the output of each order
function formatOrder($order, $isDuplicated) {
    // yadda yadda yadda
}

$ordersが次のように見えると仮定します

$orders = array(
  array(
    'orderid' => '2009091008261662',
    'email' => 'john@example.com',
    'userid' => '53'
  ),
  array(
    'orderid' => '2009091008261048',
    'email' => 'john@example.com',
    'userid' => '53'
  ),
  array(
    'orderid' => '2009091008262025',
    'email' => 'fred@example.com',
    'userid' => '103'
  ),
  array(
    'orderid' => '2009091008272082',
    'email' => 'tom@example.com',
    'userid' => '392'
  ),
  array(
    'orderid' => '2009091008265555',
    'email' => 'john@example.com',
    'userid' => '53'
  )
);

また、おそらくユーザーは自分の電子メールを変更でき、電子メールは1人のユーザーに固有であるため、userIdでのみ一致させるのが最適な場合があります。

于 2009-09-11T23:48:30.913 に答える