2017-10-11 4 views
0

チェックボックスのデータを文字列に変換してデータベースに保存しました。PHPが関数を爆発させるだけで、私がin_arrayを検索するときに配列の最初の項目を検出することができます。どうして?

私が爆発する機能とバック配列に文字列を変換しようとすると、しかし、私はトラブル離れて最初の項目から何のためにin_array検索を持っています。どうして?

$rolepref = explode(',', $roles); 
print_r($rolepref) = [0] Strategy [1] Operations 
if (in_array("Strategy", $rolepref) { echo "yes" } => Will echo yes 
if (in_array("Operations", $rolepref) { echo "yes" } => Does not work 

私はここで何が欠けていますか?前もって感謝します!

+0

確認したい実際の配列を投稿できますか?実際のコードこれは完全ではないので、これをタイプしたように見えます(ifステートメントでは閉じ括弧がありません)。 –

答えて

1

おそらく、爆発データの後に空白があります。あなたが持っているかもしれトリム

$roles = "Strategy, Operations"; 
$rolepref = array_map('trim', explode(',', $roles)); //trim and explode data 
if (in_array("Strategy", $rolepref)) { echo "yes"; } 
if (in_array("Operations", $rolepref)) { echo "yes"; } 
1

で爆発するようにしてくださいあなたの$rolesとして:"Strategy, Operations"とあなたexplodeにそれはそれはあなたに二つの要素与えるだろう,を使用した場合:... "Strategy"" Operations"を単語の前に余分なスペースに注意してください操作。各要素を比較する前にスペースをトリミングしてください。それはEXACT値を見つけた場合はtrueを返しますin_array

$roles = "Strategy, Operations"; // lets say $rolepref = array_map('trim', explode(',', $roles)); if (in_array("Strategy", $rolepref)) { echo "yes"; } if (in_array("Operations", $rolepref)) { echo "yes"; }

0

。 それはあなたの配列がまったく同じではない可能です、トリム()以下のコードが動作する

でそれを掃除してみてください。

$array = [ 
    0 => 'Strategy', 
    1 => 'Operations', 
]; 

if (in_array("Strategy", $array)) 
{ 
    echo "yes s <br />"; 
} 

if (in_array("Operations", $array)) 
{ 
    echo "yes o <br />"; 
} 
関連する問題