Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comparer deux tableaux avec des noms de clé différents

Donnez à l'un des champs ou aux deux un alias afin qu'ils correspondent par clé :

$sql1 = "SELECT modname AS module FROM users_modules WHERE email='$email'";

Il y a maintenant une clé de module plutôt que modname .

Vous pouvez utiliser array_diff pour trouver la différence entre les tableaux tant qu'ils ont une structure similaire. Dans votre cas, cela supprimerait les deux autres clés de votre deuxième requête DB.

Par exemple :

$sql1 = "SELECT modname AS module FROM users_modules WHERE email='$email'";
$result1 = $conn->query($sql1);
while ($row = $result1->fetch_assoc()){
   $indMods[] = $row;
}

$sql2 = "SELECT module FROM modules WHERE level = '$level'";
$result2 = $conn->query($sql2);
while ($row2 = $result2 -> fetch_assoc()){
   $allMods[] = $row2;
}

$difference = array_diff($indMods, $allMods);

Documentation pour le array_diff de PHP :http://php.net/manual/en/function.array- diff.php

Notez qu'il existe de nombreuses façons de le faire. Ce n'en est qu'un.