Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Comparando dois arrays com nomes de chave diferentes


Dê um ou ambos os campos um alias para que eles correspondam à chave:
$sql1 = "SELECT modname AS module FROM users_modules WHERE email='$email'";

Agora existe uma chave de module em vez de modname .

Você pode usar array_diff para encontrar a diferença entre matrizes, desde que tenham estrutura semelhante. No seu caso, isso seria remover as outras duas chaves da sua segunda consulta de banco de dados.

Por exemplo:
$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);

Documentação para array_diff do PHP :http://php.net/manual/en/function.array- diff.php

Observe que há muitas maneiras de fazer isso. Este é apenas um.