2017-01-27 5 views
1

Ich habe 2 Arrays, DefaultSizes und ExistingSizes, die ich aus der Datenbank abgerufen. $ DefaultSizes haben die Werte 'L', 'M', 'S' und $ ExistingSizes hat 'S'. (Lief einen foreach Blick durch die Werte für beide)in_array für PHP funktioniert nicht

Ich möchte Werte in $ DefaultSizes, die nicht in $ ExistingSizes sind, ausdrucken.

Dies ist mein Code:

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

Der Wert 'S' wird noch ausgedruckt.

+0

array_diff ist eine PHP-Funktion, die Sie den Unterschied von zwei Arrays – pravindot17

Antwort

2

in_array ist nicht erforderlich. Verwenden Sie array_diff und verkürzen Ihr Code:

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

Hallo geben, änderte ich meine Codes zu $ not_in_existing = array_diff ($ DefaultSizes, $ ExistingSizes); print_r ($ not_in_existing); aber es gibt einen Fehler "Array zu String-Konvertierung" in der Zeile Array_diff. – QiZhi

+0

Meine Arrays werden aus der Datenbank abgerufen. und in das Array gespeichert mit: while ($ row = mysqli_fetch_array ($ result)) { \t \t \t $ DefaultSizes [] = $ row; \t \t} Ist das das Problem? – QiZhi

+0

'Print_r ($ DefaultSizes)'. Es ist multidimensional. Wenn ja - Sie müssen es zu einer Dimension machen. –

Verwandte Themen