[PHP-users 16107]Re: 2つのarray配列で一致するデーターを表示させるには

Yasuo Ohgaki yohgaki @ ohgaki.net
2003年 6月 22日 (日) 11:47:21 JST


大垣です。

HASHIMOTO Keisuke wrote:
> こんにちは、はしもとです。
> 
> On Sat, 21 Jun 2003 20:56:39 +0900
> Kentaro Yoshida <php @ jcom.home.ne.jp> wrote:
> 
>>$x = 'orange';
>>$str = str_replace($b,$a,$x);
> 
> 
> このやり方では、例えば
> $x = 'pineapple';
> の場合に期待しない結果が返ってしまいます。
> 
> $b連想配列の中から $x に対応するキーを取り出し、そのキーを
> 使って$a連想配列から値を取り出すのが教科書どおりの処理手順
> でしょう。
> 
> $key = array_search( $x, $b );
> echo $a[ $key ];
> 
> # 1行にまとめるなら
> # echo $a[ array_search( $x, $b ) ];
> 
> ここでは簡単に書くために上記のようにしましたが、$x の値が
> $b連想配列に存在しない場合を考慮する必要があります。
> 

こういった場合はデータを見直が可能な場合、ハッシュが使えるように
データを変更した方が効率的です。(O(n) vs. O(1)の違い)

<?php
$a = array(
 '01'=>'みかん',
 '02'=>'りんご',
 '03'=>'ぶどう',
);

$b = array(
 'orange'=>'01',
 'apple'=>'02',
 'grape'=>'03',
);

$x = 'orange';
isset($b[$x]) && print $a[$b[$x]];
?>

# ハッシュをサポートする他の言語でも同様です。

--
Yasuo Ohgaki





PHP-users メーリングリストの案内