返回值与php中的多维数组中的子项值匹配

时间:2017-10-16 13:47:32

标签: php arrays multidimensional-array

我有这个数组,我想搜索并返回' 名称' ' project_id '等于预定义的值,例如来自下面的数组:

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 41 的任何记录返回所有project_id - 在这种情况下:

Value #1
Value #2
Value #5

老实说,我是PHP的新手,而且我一直在试图弄清楚各种代码片段的问题,并且我已经绊倒了互联网。说明 - 没有任何一个看起来像我没有做过什么,没有重大的修改,我不幸缺乏知识,所以任何帮助将真的很感激。

非常感谢

2 个答案:

答案 0 :(得分:2)

您可以使用Carbon

解决此问题
$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_filter()

执行此操作
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"
)

答案 1 :(得分:0)

你可以遍历子数组并查找像这样的特定条件

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

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

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