質問: 多次元配列の中で最も一般的な(最も発生している)配列を見つける必要があります。この投稿のような最も一般的な値ではなく、PHPの多次元配列で最も一般的な値を検索しますが、最も一般的な組み合わせです。 たとえば、私が以下を持っている場合: ``` $a1=array( array('704322062'), array('678073776', '704322062'), array('678073776', '704322062'), array('704322064'), array('704322062'), array('678073776'), array('678073776', '704322062') );Copy code ``` `array('678073776', '704322062')`あることを検出できるようにしたいのです`'704322062'`が最も一般的であるということではありません。 array_intersectを使用してみましたが、このシナリオでは機能しませんでした。 ありがとう!
回答: ### 答え : #### 解決: `array_count_values`はスカラー値でのみ機能し、アイテム自体が配列である場合は機能しません。ただし、最初に配列を文字列に変換する場合は、JSONとしてエンコードすることで、その関数を使用できます。 ``` // fill temp array with items encoded as JSON $temp = []; foreach($a1 as $item) { $temp[] = json_encode($item); } // count how many times each of those values occurs $value_counts = array_count_values($temp); // sort by number of occurrence, while preserving the keys ksort($value_counts); // pick the first key from the temp array $first = array_key_first($value_counts);Copy code ``` これにより、$ firstで`["678073776","704322062"]`が取得されます。「元の」配列が必要な場合は、もう一度`json_decode` これは考慮されていないことに注意してください。2つの配列が同じ回数発生する可能性があります。その場合、最初の「ランダムな」配列が選択されます。その場合も何らかの方法で処理する必要がある場合は、最初に$ tempで最大値を決定し、次にその値でフィルタリングして、対応する配列のキーのみが残るようにすることができます。