[PHP-users 16554]'001E0'と'00001'が同じ値?

gotou gotou @ hokkou.co.jp
2003年 7月 8日 (火) 14:07:28 JST


Gotouです。

今、配列内のデータと、データベースから呼び出したデータを
array_searchで比較して、データが配列内にあった場合
<select>で選択させる、というプログラムがあります。

そのときに、

配列データ = データベースのデータ
  001E0  =  00001
  001E1  =  00010
  001E2  =  00100

という風に評価されてしまい、余分な3件のデータが選択されてしまいます。

’001E0’の’E’というのが曲者なのかな、と浅知恵ながら思っているのですが、
それをどうすればよいのか、というのがわかりません。

どうか、知恵をお貸しください。

下がその判断している部分のソースです。

---------------------------------------------------------

   for ($i=0;$i<pg_numrows($result);$i++){
    $user_st_cd[]=pg_result($result,$i,0);
   }

    <中略>

  echo ("<select name=st_cd[] size=20 multiple>");
  FOR ($i = 0 ; $i < pg_numrows( $result ) ; $i++ ){
   if (in_array(pg_result( $result, $i, 0 ),$user_st_cd))
     echo (" <option value='" . pg_result( $result, $i, 0 ) . "' selected>"
. pg_result( $result, $i, 1 ) . "</option>\n");
   else
     echo (" <option value='" . pg_result( $result, $i, 0 ) . "'>" .
pg_result( $result, $i, 1 ) . "</option>\n");
  }
  echo ("</select>");

---------------------------------------------------------
in_arrayで判定しているところを、array_searchに変えてみたりもしましたが、
だめでした(悪あがき)。

PHPのバージョンは、4.2.4です。

どうかよろしくお願いします。



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