2017-01-27 167 views
1

我有2個數組,DefaultSizes和ExistingSizes,我從數據庫中檢索。 $ DefaultSizes具有值'L','M','S'和$ ExistingSizes具有'S'。 (請仔細檢查兩者的值)in_array for PHP not working

我想打印出$ DefaultSizes中不在$ ExistingSizes中的值。

這是我的代碼:

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

'S' 的價值仍然被打印出來。

+0

和array_diff是一個PHP函數,它會給你兩個數組 – 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

喜的區別,我改變了我的代碼 $ 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)'。它是多維的?如果是的話 - 你需要把它做成一個維度。 –