如何按值搜索PHP多维数据并获取另一个值?

如何按值搜索PHP多维数据并获取另一个值?,php,arrays,multidimensional-array,Php,Arrays,Multidimensional Array,我有这个阵列: Array ( [0] => Array ( [cast_id] => 45 [character] => Evelyn Salt [credit_id] => 52fe4555c3a368484e054141 [gender] => 1 [id] => 11701 [name] => Angelina Jolie [order] => 0 [profile_path] => /6tocswK39SrSjZIRDaTpVyPx

我有这个阵列:

Array (
[0] => Array ( [cast_id] => 45 [character] => Evelyn Salt [credit_id] => 52fe4555c3a368484e054141 [gender] => 1 [id] => 11701 [name] => Angelina Jolie [order] => 0 [profile_path] => /6tocswK39SrSjZIRDaTpVyPxDz8.jpg )
[1] => Array ( [cast_id] => 3 [character] => Theodore Winter [credit_id] => 52fe4555c3a368484e05409f [gender] => 2 [id] => 23626 [name] => Liev Schreiber [order] => 1 [profile_path] => /qFn3npmqd1qaYOk6yohmi3FbPhc.jpg )
[2] => Array ( [cast_id] => 4 [character] => Darryl Peabody [credit_id] => 52fe4555c3a368484e0540a3 [gender] => 2 [id] => 5294 [name] => Chiwetel Ejiofor [order] => 2 [profile_path] => /fwaEgwYJdzGyBmGcHiH13vobQii.jpg )
[3] => Array ( [cast_id] => 10 [character] => Oleg Vasilyevich Orlov [credit_id] => 52fe4555c3a368484e0540bb [gender] => 2 [id] => 7107 [name] => Daniel Olbrychski [order] => 3 [profile_path] => /nfqJ8xiVNyBQQhnYRkwJzl3iS7s.jpg ))
我需要搜索性别为2的姓名

现在我使用以下代码:

function searcharray($value, $gender, $array) {
   foreach ($array as $a => $val) {
       if ($val[$gender] == $value) {
           return $val['name'];
       }
   }
   return null;
}
$iro = searcharray('2', gender, $array);
但它只给了我第一个:利夫·施雷伯。 我需要用“,”分隔所有的字符

function searcharray($value, $gender, $array) {  
  $arrNames = [];    
  foreach ($array as $a => $val) {
       if ($val[$gender] == $value) {
           $arrNames[]= $val['name'];
       }    
   }    
  return $arrNames;

}
像这样试试

function searcharray($value, $gender, $array) {  
  $arrNames = [];    
  foreach ($array as $a => $val) {
       if ($val[$gender] == $value) {
           $arrNames[]= $val['name'];
       }    
   }    
  return $arrNames;

}

这是因为你把一个返回语句放在一个周期的中间。这样,第一个匹配将终止函数执行。 为了实现这一点,您应该首先声明一个空的结果数组,并将每个匹配值推入其中。在检查完数组的每个元素并完成foreach之后,您可以返回内爆数组,以获取所有名称,并用逗号分隔。 记住所有这些,正确的功能如下:

function searcharray($value, $gender, $array) {
   $results = [];
   foreach ($array as $a => $val) {
       if ($val[$gender] == $value) {
           array_push($results, $val['name']);
       }
   }
   return implode(',', $results);
}
$iro = searcharray('2', gender, $array);

这是因为你把一个返回语句放在一个周期的中间。这样,第一个匹配将终止函数执行。 为了实现这一点,您应该首先声明一个空的结果数组,并将每个匹配值推入其中。在检查完数组的每个元素并完成foreach之后,您可以返回内爆数组,以获取所有名称,并用逗号分隔。 记住所有这些,正确的功能如下:

function searcharray($value, $gender, $array) {
   $results = [];
   foreach ($array as $a => $val) {
       if ($val[$gender] == $value) {
           array_push($results, $val['name']);
       }
   }
   return implode(',', $results);
}
$iro = searcharray('2', gender, $array);

$res[]=$val['name'];返回内爆(',',$res)$res[]=$val['name'];返回内爆(',',$res);