如何检查特定的键和值在php数组中是否存在超过3次
我有以下‘挑战’ 我有这样的数组:如何检查特定的键和值在php数组中是否存在超过3次,php,arrays,sorting,Php,Arrays,Sorting,我有以下‘挑战’ 我有这样的数组: Array ( [0] => stdClass Object ( [id] => 94 [day] => Monday [date] => 2018-07-09 [week_number] => 2 ) [1] => stdClass Object ( [id] => 95 [day] =>
Array
(
[0] => stdClass Object
(
[id] => 94
[day] => Monday
[date] => 2018-07-09
[week_number] => 2
)
[1] => stdClass Object
(
[id] => 95
[day] => Tuesday
[date] => 2018-07-10
[week_number] => 2
)
[2] => stdClass Object
(
[id] => 83
[day] => Saturday
[date] => 2018-07-07
[week_number] => 1
)
[3] => stdClass Object
(
[id] => 82
[day] => Friday
[date] => 2018-07-06
[week_number] => 1
)
[4] => stdClass Object
(
[id] => 81
[day] => Thursday
[date] => 2018-07-05
[week_number] => 1
)
[5] => stdClass Object
(
[id] => 80
[day] => Wednesday
[date] => 2018-07-04
[week_number] => 1
)
)
function hasTooManySelections($items, $maxSelections = 3)
{
$counts = [];
foreach ($items as $item) {
$counts[$item->week_number] = isset($counts[$item->week_number]) ? $counts[$item->week_number] + 1 : 1;
if ($counts[$item->week_number] > $maxSelections) {
return true;
}
}
return false;
}
var_dump(hasTooManySelections($items));
我想知道用户选择“week_number”1、2等的次数,我不想允许用户在一周内选择3个以上的事件
我正在使用fullcalendar显示事件
我怎样才能做到这一点
提前谢谢您可以使用
数组\u reduce
来
$result = array_reduce($input, function($outpu, $item) {
if(!isset($output[$item->week_number])) {
$output[$item->week_number] = 0;
}
return $output[$item->week_number]++;
});
var_dump($result);
其中,
$input
是对象数组在PHP 7中,您可以提取周数
属性并计算值:
$result = array_count_values(array_column($array, 'week_number'));
将产生周数
作为键,计数作为值:
array
(
[1] => 4
[2] => 2
)
根据您是要检查多个还是仅检查一个,循环并检查
>3
,或者在数组中使用(3,$result)
您可以按周数对数组进行排序,然后计算所有特定组的长度如果您只需要检查是否有超过x个事件,您不需要计算所有事件,最好使用以下内容:
Array
(
[0] => stdClass Object
(
[id] => 94
[day] => Monday
[date] => 2018-07-09
[week_number] => 2
)
[1] => stdClass Object
(
[id] => 95
[day] => Tuesday
[date] => 2018-07-10
[week_number] => 2
)
[2] => stdClass Object
(
[id] => 83
[day] => Saturday
[date] => 2018-07-07
[week_number] => 1
)
[3] => stdClass Object
(
[id] => 82
[day] => Friday
[date] => 2018-07-06
[week_number] => 1
)
[4] => stdClass Object
(
[id] => 81
[day] => Thursday
[date] => 2018-07-05
[week_number] => 1
)
[5] => stdClass Object
(
[id] => 80
[day] => Wednesday
[date] => 2018-07-04
[week_number] => 1
)
)
function hasTooManySelections($items, $maxSelections = 3)
{
$counts = [];
foreach ($items as $item) {
$counts[$item->week_number] = isset($counts[$item->week_number]) ? $counts[$item->week_number] + 1 : 1;
if ($counts[$item->week_number] > $maxSelections) {
return true;
}
}
return false;
}
var_dump(hasTooManySelections($items));
演示:获得最多赞成票的可靠答案(未被接受)你放弃了吗?到目前为止你做了哪些研究或尝试?检查每一条数据,并检查其周数。记下每周数字出现的次数。如果超过任何给定周数的阈值,则使提交无效。逻辑不是太难…输入是对象数组而不是数组数组。@Pyton:我知道,如上所述,在PHP7中,您可以