我有这个数组,我想搜索并返回' 名称' ' 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的新手,而且我一直在试图弄清楚各种代码片段的问题,并且我已经绊倒了互联网。说明 - 没有任何一个看起来像我没有做过什么,没有重大的修改,我不幸缺乏知识,所以任何帮助将真的很感激。
非常感谢
答案 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);