我需要在包含4个不同子数组的以下数组中的names键中检查名称john是否超过3次
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而不是
答案 0 :(得分:3)
您可以执行以下操作:
$counts = array_count_values(array_column($array,"name"));
然后检查是否有3个人打电话给" john" :
if (isset($counts["john"]) && $counts["john"] >= 3) {
//Do stuff
} else {
//Do different stuff
}
要查找所有未被称为" 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) ...
答案 1 :(得分:0)
此处, $ namesArray 在数组中,其中包含重复值。目标是计算数组中每个值的存在时间。
$ namesArray = 阵列( “John” 的 “标记”, “约翰”, “丹”, “Hasib”, “米隆”, “沙末”, “米隆”, “约翰”);
$newArray = array();
foreach($namesArray as $name){
if(isset($newArray[$name])){
$newArray[$name]++;
}else{
$newArray[$name] = 1;
}
}
根据代码输出:
Array(
[John] => 3
[Mark] => 1
[Dan] => 1
[Hasib] => 1
[Milon] => 2
[Samad] => 1
)
答案 2 :(得分:0)
这样的功能可以完成这项工作 我大致用手机写的。
$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;
}
}