如何检查中的名称的数组
问题描述:
我需要检查是否存在是名称中存在多次约翰在名称键的3倍以上以下阵列,其中包含4个不同的子阵列如何检查中的名称的数组
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人被称为“约翰”:
if (isset($counts["john"]) && $counts["john"] >= 3) {
//Do stuff
} else {
//Do different stuff
}
要找到检查不叫所有peole “约翰”,你可以更改以上为@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) ...
答
$names = array("John","Mark","John","Dan","Hasib","Milon","Samad","Milon","John");
$existName = array();
foreach($names as $name){
if(isset($existName[$name])){
$existName[$name]++;
}else{
$existName[$name] = 1;
}
}
echo "<pre>";
print_r($existName);
-------- *Output* ---------
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;
}
}
,完美的工作,但我问反向我想看看有多少人是不是叫约翰数组 – mirvatJ
在再算上阵列核减约翰 – Andreas
它的10个元素的数组和嫖客的人数的问题应该不超过3,我应该这样做吗? mirvatJ