2013-07-19 93 views
0

我想通過搜索不同的值,以找到在陣列中的值如何搜索多維數組?

這是我的數組

Array 
(
    [0] => Array 
     (
      [triggerOn] => 07/19/2013 04:32 PM 
      [isAppointment] => 0 
      [engine_id] => 112 
     ) 

    [1] => Array 
     (
      [triggerOn] => 07/26/2013 04:32 PM 
      [isAppointment] => 1 
      [engine_id] => 111 
     ) 

) 

我試圖找到triggerOn當引擎ID = 111的價值呢?

所以,如果我有111的值,然後我需要回到2013年7月26日下午4時32 如果我有值112,然後我需要回到2013年7月19日下午4時32

我怎樣才能做到這一點?

這是我迄今

function returnValueOfArray($arr, $val){ 

    foreach($arr AS $v){ 


     foreach($v AS $sub){ 
      if($val == $sub) 
      return $v['triggerOn']; 
     } 

    } 
return 'Nothing Found'; 
} 

試過,但是這是行不通的。

+1

你試過循環和比較?這基本上是... – elclanrs

+2

編寫一個循環,沒有內置任何東西來做到這一點。 – Barmar

+0

你會在那裏有多少物品?如果你的數值小於100,那麼簡單的循環應該沒有問題,但是當你添加越來越多的成員時,你可能需要進行分類搜索等。 –

回答

1
function search_in_array($array, $engine_id){ 
foreach($array as $key => $val){ 
    if($engine_id == $val['engine_id']){ 
    return $val['triggerOn']; 
    } 
} 
} 
+2

'return'後你不需要'break' – Barmar

+0

@Barmar yes right :)更新 – 2013-07-19 23:43:02

+0

謝謝你們 - 這是我需要的。我將在4分鐘內將它作爲正確答案 – Jaylen

3
function findEngine_id($engine, $array){ 
    foreach($array as $item){ 
     if($item['engine_id'] == $engine) return $item['triggerOn']; 

    } 
    return false; 
} 
echo findEngine_id(111,$array); 
0

另一種方式做的是:

// let's assume your array is called $myArray 


for($i=0; $i < count($myArray) ; $i++){ 
    if($myArray[$i]['engine_id'] == '111'){ 
    return $myArray[$i]['triggerOn']; 
    break; 
    } 
} 

的功能它給出了這樣的:

function find_engine($engine, $myArray){ 
    for($i=0; $i < count($myArray) ; $i++){ 
     if($myArray[$i]['engine_id'] == $engine){ 
     return $myArray[$i]['triggerOn']; 
     break; 
     } 
    } 
}