sql >> Database >  >> RDS >> Mysql

Twee arrays met verschillende sleutelnamen vergelijken

Geef een van of beide velden een alias zodat ze qua sleutel overeenkomen:

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

Nu is er een sleutel van module in plaats van modname .

U kunt array_diff . gebruiken om het verschil tussen arrays te vinden, zolang ze een vergelijkbare structuur hebben. In uw geval zou dit het verwijderen van de andere twee sleutels uit uw tweede DB-query zijn.

Bijvoorbeeld:

$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);

Documentatie voor PHP's array_diff :http://php.net/manual/en/function.array- diff.php

Merk op dat er veel manieren zijn om dit te doen. Dit is er maar één.



  1. Grondbeginselen van tabeluitdrukkingen, deel 11 - Aanzichten, overwegingen bij wijzigingen

  2. Psql COPY met beperking mislukt

  3. PHP date() formaat bij het invoegen in datetime in MySQL

  4. C# MySQL-verbinding pooling