2013-03-21 106 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环。