2014-02-19 63 views
0

我找到了一种方法来搜索我的多维数组并输出结果,它的工作原理,但它只发现第一个匹配并停止。如果我在数组中有多个匹配项,我希望能够将它们全部显示出来。PHP搜索具有多个结果的多维数组?

我的阵列看起来像这样(键的第一层从0,1,2等云):

Array 
(
    [0] => Array 
     (
      [mydevice] => blahblah 
      [ipadd] => 10.10.10.209 
      [portnum] => 16040 
     ) 

function searcharray($value, $key, $array) { 
    foreach ($array as $k => $val) { 
     if ($val[$key] == $value) { 
      return $k; 
     } 
    } 
    return null; 
} 

$myoutput = searcharray($ptn2, mydevice, $newresult); 

使用类似$newresult[$myoutput][mydevice]然后我可以回声结果。

但是,如果我有'mydevice'键中的匹配数据数组中有多个条目,它不会返回它们(只是第一个)。

回答

1

这是因为return中断功能。你可以使用这样的事情:

function searcharray($value, $key, $array) { 
    $result = array();  
    foreach ($array as $k => $val) { 
     if ($val[$key] == $value) { 
      $result[] = $k; 
     } 
    } 
    return $result; 
} 

现在,你总是会得到一个数组作为结果 - 空,如果没有被发现。你可以像这样工作,例如

$mydevicekeys = searcharray($ptn2, "mydevice", $newresult); 
foreach ($mydevicekeys as $mydevicekey) { 
    // work with $newresult[ $mydevicekey ]["mydevice"] 
} 
+1

这完美的作品。它返回一个或多个结果(如果它找到多个结果)。 – Jason

0

所以结果添加到一个数组:)

function searcharray($value, $key, $array) { 
    $res = array(); 
    foreach ($array as $k => $val) { 
     if ($val[$key] == $value) { 
      $res[] = $key; 
     } 
    } 
    return $res; 
}