2017-10-16 122 views
0

我有這個數組,我想搜索並返回「」,其中「PROJECT_ID」從陣列等於預定值,例如如下:返回值從PHP多維數組匹配子項值

array(2) 
{ 
    [0]=> array(28) 
     { 
      ["id"]=> int(3794) 
      ["name"]=> string(30) "Value #1" 
      ["milestone_id"]=> int(280) 
      ["project_id"]=> int(41) 
     } 
    [1]=> array(28) 
     { 
      ["id"]=> int(3795) 
      ["name"]=> string(30) "Value #2" 
      ["milestone_id"]=> int(261) 
      ["project_id"]=> int(41) 
     } 
    [2]=> array(28) 
     { 
      ["id"]=> int(37966) 
      ["name"]=> string(30) "Value #3" 
      ["milestone_id"]=> int(250) 
      ["project_id"]=> int(40) 
     } 
    [3]=> array(28) 
     { 
      ["id"]=> int(3797) 
      ["name"]=> string(30) "Value #4" 
      ["milestone_id"]=> int(250) 
      ["project_id"]=> int(42) 
     } 
    [4]=> array(28) 
     { 
      ["id"]=> int(3798) 
      ["name"]=> string(30) "Value #5" 
      ["milestone_id"]=> int(280) 
      ["project_id"]=> int(41) 
     }   
} 

我想返回所有names對於任何具有的的project_id記錄 - 在這種情況下:

Value #1 
Value #2 
Value #5 

說實話,我是PHP的新手,我一直在試圖弄懂各種代碼片段的指令,這些代碼片段的使用方法讓我感到茫然 - 這些代碼片段中的任何一個都沒有像我這樣做,不幸的是,缺乏這方面的知識,任何幫助都會得到真正的讚賞。

非常感謝

+1

只需迭代所有子數組 – Tarun

+0

以最簡單的形式,您只需在一個簡單的循環中遍歷數組,然後在裏面檢查當前項目的project_id是否等於41 - 如果是,則輸出您想要的任何其他當前項目。如果您閱讀了關於數據結構和循環的基礎知識,那麼這是一件相當微不足道的事情......所以至少向我們展示了一些您的嘗試。 – CBroe

+0

使用http://php.net/manual/en/function.array-filter.php功能 –

回答

2

您可以array_filter()

$filteredArray = array_filter($array, function($row) { 
    return $row['project_id'] == 41; 
}); 

解決這個這將留給你一個$filteredArray持有的所有物品與PROJECT_ID == 41

現在你可以遍歷這些值,並打印出您的名字,或者您想要做什麼:

foreach ($filteredArray as $row) { 
    echo $row['name'], PHP_EOL; 
} 

或者,如果你只是想要一個數組,你可以用array_column

array_column($filteredArray, 'name'); 

或者乾脆做到這一點(在一步)

$names = array_column(
    array_filter(
     $array, 
     function($row) { 
      return $row['project_id'] == 41; 
     } 
    ), 
    'name' 
); 

哪些給你留下的最後陣列

$names Array (
    (string) "Value #1" 
    (string) "Value #2" 
    (string) "Value #3" 
) 
+0

工作完美,非常感謝你 - 你救了我的理智! – Doug

0

你可以遍歷子陣列,並尋找這樣的具體條件

 $customArray = array(); 
    foreach($outerArry as $subArray){ 

     if($subArray["project_id"]==41){ 

     $customArray[] = $subArray; 
     } 
     } 
     print_r($customArray);