2010-10-02 42 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