J'ai plusieurs à plusieurs table MySQL - il peut ressembler à:MySQL plusieurs à plusieurs table matrice de table
A | B
1 | 1
1 | 2
1 | 3
3 | 4
3 | 5
4 | 1
4 | 2
4 | 5
etc.
Vous remarquerez que les chiffres ne sont pas toujours contiguë, (A = 1,3,4 ..) - Je cherche le moyen le plus rapide de transformer cela en une table de matrice, en ignorant les colonnes et les lignes sans données (par exemple A = 2). Ce que je travaille est douloureusement lent que je prends chaque ligne dans un tableau séparé en php, en passant par une imbriqué en boucle, où il vérifie si la clé pour le tableau A et tableau B correspondance l'indice actuel:
while ($i <= $max_A) {
if (in_array($i, $array_A)) {
print ("<tr>");
while ($j <= $max_B) {
if (in_array($j, $array_B)) {
print ("<td>");
if (in_matrix($i, $j, $array_A, $array_B)) {
print ("1");
} else {
print ("0");
}
print ("</td>");
}
$j++;
}
print ("</tr>\n");
$j = $min_B;
}
$i++;
}
function in_matrix($search_value_A, $search_value_B, $array_A, $array_B) {
// Store the array keys matching search
$keys_A = array_keys($array_A, $search_value_A);
$keys_B = array_keys($array_B, $search_value_B);
foreach ($keys_A as $value) {
if (in_array($value, $keys_B)) {
return true;
}
}
return false;
}
Peut-être y at-il plus de choses que je peux faire MySQL ou accélérer la recherche - J'ai essayé de trouver un moyen de rechercher un tableau bidimensionnel (par exemple retourner la colonne A = x ET la colonne B = y).
Merci
Quels sont '$ i' et' $ j' avant que vos boucles 'while' ne commencent? –