PHP - 集合に関する関数
PHPで集合に関する操作をしたいので、関連する関数を調べます。今cakePHPでプログラムしているのでcakePHPを使います。
参考:PHP Arrays as Stacks, Queues and Set(スタック・待ち行列・和集合)
Controller
public function test(){ $a = '1,2,3,4,5,6,7'; $a = split(',',$a); $b = array(1,3,5,7,9,11,13);
$merge = array_merge($a,$b); $set = array_unique($merge); $diff = array_diff($a,$b); $diff_assoc = array_diff_assoc($a,$b); $intersect = array_intersect($a,$b);
$data = array( 'merge' => $merge, 'set' => $set, 'diff' => $diff, 'diff_assoc' => $diff_assoc, 'intersect' => $intersect );
$this->set('data',$data);}View
<?php echo 'merge: '; foreach($data['merge'] as $a){ echo $a. ' , '; } echo '<br /><br />';
echo 'set: '; foreach($data['set'] as $a){ echo $a. ' , '; } echo '<br /><br />';
echo 'diff: '; foreach($data['diff'] as $a){ echo $a. ' , '; } echo '<br /><br />';
echo 'diff_assoc: '; foreach($data['diff_assoc'] as $a){ echo $a. ' , '; } echo '<br /><br />';
echo 'intersect: '; foreach($data['intersect'] as $a){ echo $a. ' , '; } echo '<br /><br />';?>結果
merge: 1 , 2 , 3 , 4 , 5 , 6 , 7 , 1 , 3 , 5 , 7 , 9 , 11 , 13 ,
set: 1 , 2 , 3 , 4 , 5 , 6 , 7 , 9 , 11 , 13 ,
diff: 2 , 4 , 6 ,
diff_assoc: 2 , 3 , 4 , 5 , 6 , 7 ,
intersect: 1 , 3 , 5 , 7 ,まとめ
| array_merge($a,$b) | 単純に配列$aの後ろに配列$bをつなげて出力する |
|---|---|
| array_unique($merge) | 配列の要素から重複を取り除いて出力する |
| array_diff($a,$b) | 配列$aにあって、配列$bにない要素のみ出力する |
| array_diff_assoc($a,$b) | array_diffと基本的に同じだが、配列$aと配列$bを比較する際に、キーの一致も確認する。今回の場合、キーと値のペアが一致するのは、1のみである為、配列$aの1以外の数字が出力された。 |
| array_intersect($a,$b) | 配列$aにも配列$bにもある要素のみ出力する。 |