[PHP-users 6710] 英字を検索するさいのループ方法

miyazaki php-users@php.gr.jp
Fri, 5 Apr 2002 20:01:08 +0900


御世話になっています。宮崎です。

postgres及びPHP4使用

AND検索エンジンを作成している途中なのですが、
以下について質問させて下さい。
仕様はキーワードの英字をそれぞれ大文字・小文字に変換し、
変換したキーワードで検索します。
1つのキーワードで2パターンの検索
2つのキーワードで4パターンの検索
3つのキーワードで16パターンの検索
:(以下続く
:
3つキーワードが入っていた時の例では、(キーワードが a b c の場合)
No.         1.           2.           3.           4.           5.
6.           7.           8.

A            a            A            a            A            a
A            a

And       and        and        and        and        and        and
and

B            b            B            b            b            B
b            B

And       and        and        and        and        and        and
and

C            c             c             C            c             c
C            C

という様に、大文字・小文字の検索をしたいのですが、べき乗の
数を求めた後にどういう感じでループをさせるとうまく行くのかが分かりません。

最初べき乗を知らずに組んでいた時のソース↓

$search_1 = explode(" ",$search);//サーチ文切り分け
$flg = 0;
while(sizeof($search_1) > $flg){
 $search_2[$flg] = strtoupper($search_1[$flg]);//大文字変換
 $search_3[$flg] = strtolower($search_1[$flg]);//小文字変換
 if(sizeof($search_1) == $flg + 1){
  $search_4 = $search_4 . " search like '%$search_2[$flg]%' or";
  $search_5 = $search_5 . " search like '%$search_3[$flg]%' or";
  $search_6 = $search_6 . " search like '%$search_2[$flg]%' or";
  $search_7 = $search_7 . " search like '%$search_3[$flg]%'";
 }else{
  $search_4 = $search_4 . " search like '%$search_2[$flg]%' and";
  $search_5 = $search_5 . " search like '%$search_3[$flg]%' and";
  $search_6 = $search_6 . " search like '%$search_3[$flg]%' and";
  $search_7 = $search_7 . " search like '%$search_2[$flg]%' and";
 }
 $flg++;
}
"select * from test where$search_4$search_5$search_6$search_7";

上記では、2つのキーワード以上の検索が出来ません。
これを踏まえてかなり試行錯誤しましたが、べき乗後のループ
が思うように組みあがりません。
どなたか御教授願います。

以下の??????部分で躓いています。

$search_1 = explode(" ",$search);//サーチ文切り分け
//べき乗式
  $count = 1;
  for ($i = 0; $i < sizeof($search_1); $i++)  {
   $count *= 2;//大文字小文字あわせて2通り
}
$flg = 0;
while(sizeof($search_1) > $flg){
    ??????
    $flg++;
}

本当に申し訳御座いませんが、何とか御願い申し上げます。

//////////////////////////////////////////////////////////////
宮崎