[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 メーリングリストの案内