Home > PHP > [PHP] ある種の配列、重複チェック

[PHP] ある種の配列、重複チェック

  • 2009-02-10 (火) 17:54
  • PHP

spyc: a simple php yaml classを使ってよみこんだ配列データの重複をチェックするには、このページのコメントにのってるarray_repeated関数を使えば出来そうな気がする。

自分用メモ。

PHPコード

$data1 = array(
    1=> array('shipment'=>19, 'insert'=> 103, 'component'=> 121),
    2=> array('shipment'=>39, 'insert'=> 103, 'component'=> 121),
    3=> array('shipment'=>139, 'insert'=> 103, 'component'=> 121),
    4=> array('shipment'=>9, 'insert'=> 103, 'component'=> 121),
    5=> array('shipment'=>9, 'insert'=> 103, 'component'=> 121),
    6=> array('shipment'=>19, 'insert'=> 103, 'component'=> 121)
);
 
$data2 = array(
    array('品番'=> '1236', '品名'=> 'レタス'),
    array('品番'=> '1234', '品名'=> 'レタス'),
    array('品番'=> '1234', '品名'=> 'バナナ'),
    array('品番'=> '1134', '品名'=> 'レタス'),
    array('品番'=> '1234', '品名'=> 'レタス'),
    array('品番'=> '1134', '品名'=> 'レタス')
 
);
 
 
$result1 = array_repeated($data1);
$result2 = array_repeated($data2);
 
echo '■ $data1--------------------------'."\n\n";
var_dump($result1);
echo "\n";
 
echo '■ $data2--------------------------'."\n\n";
var_dump($result2);
 
 
/**
 * 重複チェック
 *
 * http://jp2.php.net/manual/ja/function.array-unique.php より
 * 
 * @param string $array 配列キーは数字である必要がある
 * @return array キー(index番号)を保っている
 */
function array_repeated($array)
{
    if ( !is_array($array) ) {
        return false;
    }
 
    $duplicates = array();
    foreach ( $array as $key => $val ) {
        end($array);
        $k = key($array);
        $v = current($array);
 
        while ( $k !== $key ) {
            if ( $v === $val ) {
                $duplicates[$key] = $v;
                                break;
            }
 
            $v = prev($array);
            $k = key($array);
        }
    }
 
    return $duplicates;
}

出力結果

■ $data1--------------------------

array(2) {
  [1]=>
  array(3) {
    ["shipment"]=>
    int(19)
    ["insert"]=>
    int(103)
    ["component"]=>
    int(121)
  }
  [4]=>
  array(3) {
    ["shipment"]=>
    int(9)
    ["insert"]=>
    int(103)
    ["component"]=>
    int(121)
  }
}

■ $data2--------------------------

array(2) {
  [1]=>
  array(2) {
    ["品番"]=>
    string(4) "1234"
    ["品名"]=>
    string(9) "レタス"
  }
  [3]=>
  array(2) {
    ["品番"]=>
    string(4) "1134"
    ["品名"]=>
    string(9) "レタス"
  }
}

Comments:0

Comment Form
Remember personal info

Trackbacks:0

Trackback URL for this entry
http://side-b.sto.co.jp/weblog/archives/431/trackback
Listed below are links to weblogs that reference
[PHP] ある種の配列、重複チェック from Side-B

Home > PHP > [PHP] ある種の配列、重複チェック

Search
Feeds
Meta

Return to page top