Php检查数组是否已确定值


$numbers = array('1' => '1', '2' => '2');

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

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

PHP中有什么方法可以实现这一点吗?

我不确定你想要过滤什么(键或值,或者两者都有(。所以我写了这个代码,这样你就可以选择你需要的:

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

$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
)

可能是array_filter((可以帮助-

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

$check = array_filter($numbers, function($v) {
return $v < 1 || $v > 12;
});
// check values present
if (!empty($check)) {
// show error
}

最新更新