PHP では、2 次元配列は複数の配列を含む配列を指します。つまり、配列内の要素は配列であり、その形式は次のとおりです。
$students = array( array('id' => 1, 'name' => '张三', 'age' => 18), array('id' => 2, 'name' => '李四', 'age' => 19), array('id' => 3, 'name' => '王五', 'age' => 20), array('id' => 4, 'name' => '张三', 'age' => 18) );
2 次元配列の場合、要素を複製するには、この場合は重複を削除する必要があるという問題が発生する場合があります。では、どうやって体重を減らすのでしょうか?
方法 1: array_unique 関数を使用する
array_unique 関数は配列内の重複する値を削除できますが、1 次元配列に対してのみ使用できるため、二次元配列上で処理されます。具体的な考え方は次のとおりです。
2 次元配列内の各部分配列を走査し、それを文字列に変換し、新しい配列に保存できます。次に、新しい配列が重複排除され、最終的に重複排除された 2 次元配列が作成されます。
コードは次のように実装されます:
function unique_array($array) { $temp = array(); foreach ($array as $key => $value) { $temp[$key] = implode(',', $value); } $temp = array_unique($temp); $result = array(); foreach ($temp as $key => $value) { $result[$key] = explode(',', $value); } return $result; } $students = array( array('id' => 1, 'name' => '张三', 'age' => 18), array('id' => 2, 'name' => '李四', 'age' => 19), array('id' => 3, 'name' => '王五', 'age' => 20), array('id' => 4, 'name' => '张三', 'age' => 18) ); $result = unique_array($students); print_r($result);
出力結果は次のとおりです:
Array ( [0] => Array ( [id] => 1 [name] => 张三 [age] => 18 ) [1] => Array ( [id] => 2 [name] => 李四 [age] => 19 ) [2] => Array ( [id] => 3 [name] => 王五 [age] => 20 ) )
方法 2: array_reduce 関数を使用します。
array_reduce 関数はマージできます。 2 次元配列を 1 次元配列に変換し、それに対して重複排除操作を実行します。具体的な考え方は次のとおりです。
まず、2 次元配列内の各部分配列を文字列に変換し、それを新しい配列に保存します。次に、array_reduce 関数を使用して新しい配列を文字列に結合し、array_unique 関数を使用して文字列の重複を除去します。最後に、explode 関数を使用して、重複排除された文字列を 2 次元配列に変換します。
コードは次のように実装されます。
function unique_array($array) { $temp = array(); foreach ($array as $key => $value) { $temp[$key] = implode(',', $value); } $result = array_reduce($temp, function($carry, $item){ if (!in_array($item, $carry)) { $carry[] = $item; } return $carry; }, array()); $result = array_map(function($item) { return explode(',', $item); }, $result); return $result; } $students = array( array('id' => 1, 'name' => '张三', 'age' => 18), array('id' => 2, 'name' => '李四', 'age' => 19), array('id' => 3, 'name' => '王五', 'age' => 20), array('id' => 4, 'name' => '张三', 'age' => 18) ); $result = unique_array($students); print_r($result);
出力結果は次のとおりです。
Array ( [0] => Array ( [id] => 1 [name] => 张三 [age] => 18 ) [1] => Array ( [id] => 2 [name] => 李四 [age] => 19 ) [2] => Array ( [id] => 3 [name] => 王五 [age] => 20 ) )
概要
上記は、重複排除の 2 つの方法です。 PHP の 2 次元配列。どちらの方法も PHP の組み込み関数を使用しており、具体的な実装アイデアは比較的単純です。 array_reduce 関数を使用する場合、array_map 関数を使用して重複排除された文字列を 2 次元配列に変換する必要があることに注意してください。
以上がPHPの2次元配列から重複を削除する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。