2010-10-02 5 views
0

Voici ce que les premières sorties du tableau:Recherche PHP par tableau A id correspondant du tableau B ensuite les données d'impression de tableau B

Array ( 
[0] => Array ([id] => 67 [title] => avatar delete any) 
[1] => Array ([id] => 66 [title] => avatar edit any) 
[2] => Array ([id] => 65 [title] => avatar upload) 
[3] => Array ([id] => 8 [title] => comments edit own) 
[4] => Array ([id] => 6 [title] => comments post) 
[5] => Array ([id] => 9 [title] => comments remove own) 
[6] => Array ([id] => 7 [title] => comments vote) 
[7] => Array ([id] => 5 [title] => get other members emails) 
[8] => Array ([id] => 1 [title] => send greetings) 
[9] => Array ([id] => 4 [title] => send messages) 
[10] => Array ([id] => 64 [title] => use flip chat) 
[11] => Array ([id] => 11 [title] => videos add) 
[12] => Array ([id] => 13 [title] => videos approve) 
[13] => Array ([id] => 12 [title] => videos delete) 
[14] => Array ([id] => 14 [title] => videos edit) 
[15] => Array ([id] => 10 [title] => videos view) 
[16] => Array ([id] => 2 [title] => view profiles) 
[17] => Array ([id] => 3 [title] => vote)) 

La deuxième sorties du tableau ceci:

Array (
[2] => Array ([id] => 2 [title] => view profiles [AllowedCount] => 5 [AllowedPeriodLen] => 5) 
[3] => Array ([id] => 3 [title] => vote [AllowedCount] => 0 [AllowedPeriodLen] => 0)) 

Je suis utiliser un foreach pour faire une boucle dans le premier tableau pour afficher les actions activées. Comment vérifier si la clé du deuxième tableau correspond à la clé du premier, puis donner des valeurs de variables de AllowedCount, et AllowedPeriodLen?

Répondre

1

je serais reconsidère ma conception de tableau si l'identifiant est vraiment un numéro unique, puis redessiner le premier réseau à être comme ça:

$arr1 = Array ( 
[67] => avatar delete any 
[66] => avatar edit any 
... 
) 

le second comme celui

$arr2 = Array (
[2] => Array ([title] => view profiles [AllowedCount] => 5 [AllowedPeriodLen] => 5) 
[3] => Array ([title] => vote [AllowedCount] => 0 [AllowedPeriodLen] => 0)) 

si que la ligne correspond à

puis juste faire quelque chose comme

foreach($arr2 as $key=>$element){ 
    echo $arr1[$key]; 
} 
0

Voici ce qui a fonctionné. La fonction array_key_exists est très pratique.

$bEnabled = array_key_exists($arr1['id'], $arr2); 
if($bEnabled){ 
    $iNumAllowed = $arr2[$arr1['id']]['AllowedCount']; 
} 
+0

bien que cela ne me semble pas très logique parce que je préfère en premier lieu boucler le plus petit tableau. il est aussi plus logique de faire une boucle sur arr2 et de faire quelque chose comme foreach ($ arr2 comme autorisation $) {$ iNumAllowed = $ arr2 ['AllowedCount']};} pourquoi faire une boucle sur 1 si vous n'avez pas besoin de vlaue? btw est-il possible d'avoir des ID dans arr2 qui ne sont pas dans arr1? Si non, alors vous n'avez vraiment pas besoin de vérifier si un identifiant de arr2 est dans arr1 – ITroubs

+0

Je suis désolé de ne pas vous avoir donné tout le code pour faire une évaluation correcte. Tout cela se passe déjà dans une boucle foreach sur arr1. – tmartin314

Questions connexes