2014-02-19 52 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; 
}