2017-01-27 10 views
1

データベースから取得した2つの配列DefaultSizesとExistingSizesがあります。 $ DefaultSizesの値は 'L'、 'M'、 'S'で、$ ExistingSizesの値は 'S'です。 (両者の値をチェックするforeach lookを実行してください)PHP用のin_arrayが機能しない

$ DefaultSizesの$ ExistingSizesにない値を出力したいとします。

これは私のコードです:

$count = 1; 
foreach ($DefaultSizes as &$def) 
{ 
    if(in_array($def['Size'],$ExistingSizes) === false) 
    { 
     echo "$def[Size]<br>"; 
     $count++; 
    } 
} 

値 'S' をまだプリントアウトします。

+0

array_diffはあなたに二つの配列 – pravindot17

答えて

2

in_arrayの必要はありません。 array_diffを使用し、コードを短く:

$DefaultSizes = ['L','M','S']; 
$ExistingSizes = ['S']; 
$not_in_existing = array_diff($DefaultSizes, $ExistingSizes); 
print_r($not_in_existing); // array('L', 'M') 
+0

こんにちはの違いを与えるPHP関数ですが、私は $ not_in_existing = array_diff($ DefaultSizes、$ ExistingSizes) に自分のコードを変更しました。 print_r($ not_in_existing); array_diff行に "Array to string conversion"というエラーがあります。 – QiZhi

+0

私の配列はデータベースからフェッチされます。 while($ row = mysqli_fetch_array($ result)){ \t \t \t $ DefaultSizes [] = $ row; \t \t} これは問題ですか? – QiZhi

+0

'Print_r($ DefaultSizes)'です。それは多次元ですか?はいの場合 - それを1次元にする必要があります。 –