2013-03-21 103 views
0

我想盡量減少我的函數內嵌套的foreach循環。但問題是,我使用的是二維數組是如下:用1個foreach搜索多維數組?

$Multi_Array = array (
     'Users' => array ('User1', 'User2'), 
     'Passwords' => array ('Pass1', 'Pass2'), 
     'Warnings' => array (1, 30), 
     'Admin' => array ('True', 'False')  
    ); 

我目前有兩個foreach循環與我的陣列工作。我將如何最小化嵌套的foreach循環並使用1?

+1

你想用它做什麼? – 2013-03-21 23:01:56

+0

這只是從管理角度。我正在嘗試一種工具,將所有數據從數據庫中提取出來,並將它們放入自己的透視圖數組中;按照每個值加入密鑰,因此'用戶'的密鑰0將鏈接到其他數組密鑰的密鑰0。但我想盡量減少嵌套的foreach循環, – user2146021 2013-03-21 23:03:39

+0

@ user2146021:你沒有回答他的問題。你想用這個陣列做什麼不適合你?把它分類?怎麼樣?什麼不行? – 2013-03-21 23:09:40

回答

0

我能想到的唯一方法是在一個函數中創建foreach語句,然後讓它檢查它是否是使用is_array()的數組,然後在true時它會將該數組傳遞給函數。

function check_array($array){ 
foreach ($array as $key=>$value){ 
if(is_array($value)){ 
    check_array($value);} 
else { ...do something with $value...} 
} 
+0

所以你說的使用遞歸形式?把數組通過相同的功能? – user2146021 2013-03-21 23:04:27

+0

是更新原始帖子的代碼示例 – Syndrose 2013-03-21 23:11:23

0

我不知道這是否是你想要的,但如何對這樣的事情:

for ($i=0;$i<count($Multi_Array['Users']);$i++) 
{ 
    $users[$Multi_Array['Users'][$i]]['Password'] = $Multi_Array['Passwords'][$i]; 
    $users[$Multi_Array['Users'][$i]]['Warning'] = $Multi_Array['Warnings'][$i]; 
    $users[$Multi_Array['Users'][$i]]['Admin'] = $Multi_Array['Admin'][$i]; 
} 

它不是的foreach,但它的1環。