Php 如何检查名称在数组中是否存在多次

Php 如何检查名称在数组中是否存在多次,php,arrays,foreach,Php,Arrays,Foreach,我需要检查以下包含4个不同子数组的数组中的names键中是否有超过3次的名称john Array ( [0] => Array ( [total] => 4.2 [name] => john ) [1] => Array ( [total] => 2 [name] => john )

我需要检查以下包含4个不同子数组的数组中的names键中是否有超过3次的名称john

Array
(
    [0] => Array
        (
            [total] => 4.2
            [name] => john
        )

    [1] => Array
        (
            [total] => 2
            [name] => john
        )

    [2] => Array
        (
            [total] => 3
            [name] => adam
        )

    [3] => Array
        (
            [total] => 1.5
            [name] => john
        )

)

我首先使用的是mysql,但我更喜欢使用php。您可以执行以下操作:

 $counts = array_count_values(array_column($array,"name"));
然后检查是否有3个人叫“约翰”:

要查找并检查所有不叫“john”的人,您可以将上述内容更改为@Andreas建议的内容:

  if (isset($counts["john"]) && (count($array) - $counts["john"]) > 3) {
     //Do stuff
 } else {
      //Do different stuff
  }
或者:

 $notJohn = count(array_filter($array, function ($element) {
      return $element["name" != "john";
 }));
 if ($notJohn >= 3) ...

这里,$namesArray在一个数组中,其中包含重复值。目标是计算数组中每个值存在的时间

$namesArray= 数组(“约翰”、“马克”、“约翰”、“丹”、“哈西布”、“米隆”、“萨马德”、“米隆”、“约翰”)

根据这里的代码输出:

Array(
  [John] => 3
  [Mark] => 1
  [Dan] => 1
  [Hasib] => 1
  [Milon] => 2
  [Samad] => 1
)

这样的函数可以完成这项工作 我大概是用手机写的

  $occurence = 0;
  function a() {
  for($x = 0; $x < 4; $x++) {
    for($y = 0; $y < 2; $y++) {
      if (array[$x][$y] === "John") {
        $occurence++;
      }
    }
  }
  if($occurence > 3) {
    return false;
  }
  else {
    return true;
    }
 }
$occurrence=0;
函数a(){
对于($x=0;$x<4;$x++){
对于($y=0;$y<2;$y++){
if(数组[$x][$y]==“John”){
$occurrence++;
}
}
}
如果($occurrence>3){
返回false;
}
否则{
返回true;
}
}

这很好,但我问了相反的问题,我想检查有多少人在那个数组中不叫约翰。然后计算数组并减去约翰。这是一个由10个元素组成的数组,约翰的数量不应该超过3,我应该这样做吗
如果约翰>3,我看不出这个问题是如何计算“非约翰”的。我只看见约翰伯爵。也许你需要修改你的问题,让它更清楚@Mirvatju更新为@Andreas建议
Array(
  [John] => 3
  [Mark] => 1
  [Dan] => 1
  [Hasib] => 1
  [Milon] => 2
  [Samad] => 1
)
  $occurence = 0;
  function a() {
  for($x = 0; $x < 4; $x++) {
    for($y = 0; $y < 2; $y++) {
      if (array[$x][$y] === "John") {
        $occurence++;
      }
    }
  }
  if($occurence > 3) {
    return false;
  }
  else {
    return true;
    }
 }