2011-06-07 107 views
1

我有一个像在多维数组

Array ( 
    [0] => Array ([0] => Array ([SSN] => 123456789 [borrowerName] => Peter K )) 
    [1] => Array ([0] => Array ([SSN] => 412516789 [borrowerName] => Jack P )) 
    [2] => Array ([0] => Array ([SSN] => 999338999 [borrowerName] => Angel M )) 
) 

我希望能够寻找一个SSN并回到它在哪里

例如search($array,'SSN','412516789')索引数组搜索数组索引应该返回1

+3

这里的多维数组有什么意义?你的数据很容易用第二个数组表示。 – 2011-06-07 17:07:00

+0

只是'foreach()'父数组,并翻找你想要的东西。 php的数组搜索功能不是为多维搜索而构建的。 – 2011-06-07 17:10:29

+0

更改结构不完全是一个选项,所以我将不得不使用这个。 foreach会非常低效 – ash 2011-06-07 17:22:45

回答

2

当然你需要一个foreach。否则无法做到。

function search($array,$key,$value) { 
    foreach($array as $k=>$v) { 
    if ($v[0][$key]==$value) 
     return $k; 
    } 
} 
0

下面是一些在multidim数组中递归搜索的函数,您可能希望根据需要进行调整。

function findInMultiDim($array, $value){ 
    if(in_array($value,$array)) return TRUE; 
    foreach($array as $v){ 
     if(is_array($v)){ 
      $result = findInMultiDim($v, $value); 
      if($result === TRUE){ 
       return TRUE; 
      } 
     } 
    } 
    return FALSE; 
}