人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

PHPの質問です。長さが10の配列Aに人の名前が10人分入っています。長さが10の配列Bにも人の名前が10人分入っています。
1)AとBに共通の人名だけ抜きだした配列を作る
2)AとBを合わせた配列を作るが、重複している要素は重複しないように一つだけにする
という操作をしたいのですが、これらを最もスマートに行うにはどんなコードを書けばよいでしょうか?

●質問者: pha
●カテゴリ:コンピュータ ウェブ制作
✍キーワード:PHP コード スマート 人名 名前
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● じゃっくそにっく
●100ポイント ベストアンサー

こんにちは。

PHPでは、

共通部分を配列にするarray_intersect()と、

重複要素を削除するarray_unique()という配列操作関数がありますので、

これを使って、

  1. 共通部分を新配列に
  2. 重複を削除

とすると短くかけると思います。

http://jp2.php.net/manual/ja/function.array-unique.php

http://jp2.php.net/manual/ja/function.array-intersect.php


サンプルソース(SHIFT-JIS)

<html><head><meta http-equiv="Content-Type" content="text/html; charset=SHIFT-JIS">
</head>
<body>
<?php
// テスト配列
$A = array( '一郎', '二郎', '三郎', '四郎', '五郎', '六郎', '七朗', '七朗' ,'中居', '十兵衛' );
$B = array( '一郎', '二郎', '三郎', '四郎', '五郎', '六郎', '七朗', '七朗' ,'安藤', '田中' );

/*
1)AとBに共通の人名だけ抜きだした配列を作る
2)AとBを合わせた配列を作るが、重複している要素は重複しないように一つだけにする
*/

// 共通の人名だけ抜き出した配列を作る
// ただし、重複している要素は1つにする

// 共通部分を取り出す
$res = array_intersect($A, $B);
// 重複する要素を取り除く
$res = array_unique($res);
echo "<pre>";
var_dump($res);
echo "</pre>";

?>
</body></html>
◎質問者からの返答

わ、そんなそのままの関数があったんですね!

ありがとうございますー


2 ● gaeeyo
●10ポイント
$a = array('太田','田中','長井','宮地','5番','6番','橋本','山中','秋葉','社長');
$b = array('社長', '山根','田中','青木','吉田','松本','大木','名倉','原田','堀内');

// $a と $b に共通した名前
$c = array_intersect($a, $b);
print_r($c);

// $a と $b を合わせた配列を作って、重複する要素を省く
$d = array_unique(array_merge($a,$b));
print_r($d);

ダミーURL http://jp.php.net/array_unique


3 ● t_shiono
●10ポイント

その後の用途などにも依存するかと思いますが、サイズが10個であれば、以下が一番簡単なのではないでしょうか?

$unique_mergeのキーが問題ならsortでも使ってください。

コードはサイズ5個でやってます。

$a = array("a", "b", "c", "d", "e");

$b = array("a", "c", "e", "f", "g");

$intersect = array_intersect($a, $b);

$unique_merge = array_unique(array_merge($a, $b));

print_r ($intersect);

print_r ($unique_merge);


また、マニュアルを見ると色々あるので、一度目を通しては?

http://jp.php.net/manual/ja/ref.array.php

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ