2012-11-24 13 views
8

私のIDがカンマ区切り文字列で存在するかどうかを確認する必要があります。値がPHPのコンマ区切り文字列であることを確認してください

私の文字列は"1,2,3,4,10"としてデータベースに保存されます。

私はそれが動作していない

$HiddenProducts = array($sqlvalue); 

if (in_array(2, $HiddenProducts)) { 
    echo "Available"; 
} else { 
    echo "Not available"; 
} 

を試してみました。任意の解決策をしてください。

+0

カンマ区切りの値を持つ文字列から配列を作成するには、 'array()'の代わりに 'explode()'が必要です。 –

+0

データベース機能を使ってチェックしてみませんか?なぜ文字列として格納されていますか? – meze

+0

値がCSVの内部にある場合、最も簡単な方法は次のとおりです: 'strpos( '、'。$ list。 '、'、 '、'。$ item。 '、!)!== FALSE;' –

答えて

29

文字列の文字列部分を、特定の区切り文字(この場合はコンマ)で区切って配列を作成するには、explode()を使用します。

$HiddenProducts = explode(',',$sqlvalue); 
if (in_array(2, $HiddenProducts)) { 
    echo "Available"; 
} else { 
    echo "Not available"; 
} 
2

in_array()実際はあなたが望むものですが、誤って配列を作成しています。 $sqlvalue = '1,2,3,4,10'を想定し

...

$hiddenProducts = explode(',', $sqlvalue); 

その後は、in_array()を使用することができます。まず、私は別のアプローチを提供させ、代わりに単に症状を硬化させるの

if (in_array(2, $HiddenProducts)) 
    echo "Available"; 
else 
    echo "Not available"; 
1

おそらくではありません。のような情報をテーブルに保存してください。一部の製品が隠されているかどうか、データベースに把握させることは可能でなければなりません。そのためには、データを正しく正規化する必要があります。

明らかに、あなたはどこかに製品のテーブルがあり、いくつかは隠されているはずです。これがすべての製品に属しているtrueまたはfalseのプロパティの場合は、それを新しい列として商品テーブルに追加することができます。

SELECT id FROM products WHERE id = 2 AND hidden = 1 

hiddenはあなたの製品の固有の特性ではない場合、あなたはまた、単に製品IDのリストであるヘルパー表を作成することができます。

エントリは単に製品が隠されていると言うだけです。 IDがテーブルにない場合は、ではなく、が表示されません。

1

をチェックする機能をin_array使用し、アレイ

$HiddenProducts = explode(',',$sqlvalue); 

までで、カンマ区切りの文字列を変換機能を爆発使っ

関連する問題