Php检查数组是否已确定值 $numbers=array('1'=>'1','2'=>'2');

Php检查数组是否已确定值 $numbers=array('1'=>'1','2'=>'2');,php,Php,我有一个从1到12的数字数组 可能存在不在1到12范围内的值。只允许使用1到12之间的数字 PHP中有什么方法可以做到这一点吗?可能会有帮助- 首先检查是否有任何不合适的值- $check = array_filter($numbers, function($v) { return $v < 1 || $v > 12; }); // check values present if (!empty($check)) { // show error } $check=a

我有一个从1到12的数字数组

可能存在不在1到12范围内的值。只允许使用1到12之间的数字

PHP中有什么方法可以做到这一点吗?

可能会有帮助-

首先检查是否有任何不合适的值-

$check = array_filter($numbers, function($v) {
    return $v < 1 || $v > 12;
});
// check values present
if (!empty($check)) {
    // show error
}
$check=array\u filter($number,function($v){
返回$v<1 | |$v>12;
});
//检查当前值
如果(!空($check)){
//显示错误
}

我不确定要过滤什么(键或值或两者)。因此,我编写了此代码,以便您可以选择所需的代码:

我使用这个数组来测试代码:

$numbers= array('1' => '1', '2' => '2', "3"=>34, "34" => "7", 5=>8);

此“允许”条件指的是键或此关联数组的值?它指的是关联数组的值。
<?php
$numbers= array('1' => '1', '2' => '2', "3"=>34, "34" => "7", 5=>8);

# filter key
function filter_number_keys($input_key)
{
    if(intval($input_key) <= 12 && intval($input_key) >= 1){
        return true;
    }else{
        return false;
    }
}
# filter value
function filter_number_values($input_value, $input_key)
{
    if(intval($input_value) <= 12 && intval($input_value) >= 1){
        return true;
    }else{
        return false;
    }
}
# filter both
function filter_number_both($input_value, $input_key)
{
    if(intval($input_value) <= 12 && intval($input_value) >= 1 
    && intval($input_key) <= 12 && intval($input_key) >= 1 ){
        return true;
    }else{
        return false;
    }
}
# filter values
echo "Filter values : " . PHP_EOL;
print_r(array_filter($numbers, 'filter_number_values', ARRAY_FILTER_USE_BOTH));
# filter keys
echo "Filter keys : " . PHP_EOL;
print_r(array_filter($numbers, 'filter_number_keys', ARRAY_FILTER_USE_KEY));
# fitler both
echo "Filter both : " . PHP_EOL;
print_r(array_filter($numbers, 'filter_number_both', ARRAY_FILTER_USE_BOTH));

?>
Filter values : 
Array
(
    [1] => 1
    [2] => 2
    [34] => 7
    [5] => 8
)
Filter keys : 
Array
(
    [1] => 1
    [2] => 2
    [3] => 34
    [5] => 8
)
Filter both : 
Array
(
    [1] => 1
    [2] => 2
    [5] => 8
)