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