2010-10-02 46 views
0

这里从B阵列匹配的ID,然后在打印数据的第一阵列输出什么:PHP搜索通过数组A从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)) 

第二阵列输出这样的:

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

我使用foreach循环遍历第一个数组以显示已启用的操作。我将如何检查第二个数组的Key是否与First的键匹配,然后赋予AllowedCount和AllowedPeriodLen的变量值?

回答

1

我会重新考虑我的阵列设计 如果ID确实是一个独一无二的号码,然后重新设计第一阵列是这样的:

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

第二个这样的

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

所以该行匹配的编号

然后只是做一些像

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

这是什么工作。 array_key_exists函数派上用场。

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

好吧,这对我来说并不真实,因为首先我宁愿循环更小的阵列。如果你不需要任何vlaue,那么为什么循环超过1呢?这是一个很好的选择。顺便说一句,有可能在arr2中有一些id不在arr1中?如果不是,那么你真的不需要检查arr2中的任何id是否在arr1 – ITroubs 2010-10-02 14:00:42

+0

对不起,我没有给你所有的代码来做出适当的评估。所有这些已经在arr1的foreach循环中进行了。 – tmartin314 2010-10-02 14:16:37