性格悪い人が優勝

下記のような連想配列が2つあります。
それらの配列の3つ目の電話番号(070-0000-000等)のみを比較して一致する連想配列を配列にして出力するようなプログラムを考えています。
連想配列同士を比較する方法が見つからなかったため、どのように書いたら良いのかわかりません。
ご教授お願い致します。

【既存の連想配列】
<?php
$first = array(
    'test_1' => array(
        0 => '山田太郎',
        1 => 'ヤマダタロウ',
        2 => '090-0000-0000',
    ),
    'test_2' => array(
        0 => '田中次郎',
        1 => 'タナカジロウ',
        2 => '080-0000-0000',
    ),
    'test_3' => array(
        0 => '佐藤三郎',
        1 => 'サトウサブロウ',
        2 => '070-0000-0000',
    ),
);

$second = array(
    'test_1' => array(
        0 => '鈴木四郎',
        1 => 'スズキシロウ',
        2 => '050-0000-0000',
    ),
    'test_2' => array(
        0 => '佐藤五郎',
        1 => 'サトウサブロウ',
        2 => '070-0000-0000',
    ),
    'test_3' => array(
        0 => '安藤六郎',
        1 => 'アンドウロクロウ',
        2 => '000-0000-0000',
    ),
);
?>

【比較後の配列(例)】
$result //に結果を格納

この$resultの中身は、 array('佐藤五郎','サトウサブロウ','070-0000-0000'); のような感じです。

A 回答 (1件)

$result = array();


$first_numbers = array_flip(array_map('end', $first));
foreach ($second as $item) {
  if (isset($first_numbers[$item[2]])) {
    $result[] = $item;
  }
}

http://codepad.org/PDODnMeE
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!