1

私は新しい問題を抱えていて、私の心は燃えています、私はphpに配列を持っています

$test = array();
    Array
    (
        [0] => Array
            (
                [account] => 14319896
                [value] => 725.57
                [id] => 280
            )

        [1] => Array
            (
                [account] => 163157
                [value] => -723.57
                [id] => 283
            )

        [2] => Array
            (
                [account] => 163157
                [value] => 723.57
                [id] => 284
            )

        [3] => Array
            (
                [account] => 161817
                [value] => -723.57
                [id] => 285
            )

    )

アカウントが必要です。これらはこの配列に複数あります。この例では、$ test[1][id]と$test[2][id]が必要です。

アイデアはありますか?現時点ではこれ以上わかりません。

ご協力いただきありがとうございます。

4

2 に答える 2

4

アカウント番号を新しい配列のキーとして使用し、各エントリをカウントしてから、カウント > 1 の項目を取得します

$dupes = array();
foreach($array as $account) {
  ++$dupes[$account['account']];
}

$dupes = array_filter($dupes, function($count) { return $count > 1; });

質問の下のコメントに回答するための編集 …</p>

重複の ID (またはキー) が必要な場合は、カウントを直接保存せず、代わりに別の配列を使用します。

$dupes = array();
foreach($array as $key => $account) {
  if(!array_key_exists($account, $dupes))
    $dupes[$account['account']] = array();
  $dupes[$account['account']][] = $account['id']; // or: = $key
}

$dupes = array_filter($dupes, function($ids) { return count($ids) > 1; });
于 2012-12-27T20:09:01.560 に答える
0

キーが次のように構成されたアカウント番号である連想配列を持つようにアーキテクチャを変更する必要があります。

 Array
(
    [14319896] => Array
        (
            [0]=>Array(
                [value] => 725.57
                [id] => 280
            )
        )

    [163157] => Array
        (
            [0]=>Array(
                [value] => -723.57
                [id] => 283
             )
            [1]=>Array(
                [value] => 723.57
                [id] => 284
            )
        )

    [161817] => Array
        (
            [0]=>Array(
                [value] => -723.57
                [id] => 285
            )
        )

)


$dupes = array();
foreach($array as $key => $account) {

  $dupes[$account['account']][] = array($account['id'],$account['value']); 
}

そのアーキテクチャでは、次のおかげで必要なものすべてを取得できますarray_filter

$dups = array_filter($dupes, function($account){ return count($account)>1;});
于 2012-12-27T20:31:44.907 に答える