is_double() 是 PHP 的一个内建函数,用于判断一个变量是否是浮点类型。它的用法和 is_float() 完全相同,实际上 is_double() 是 is_float() 的别名。
语法:
is_double(mixed $var): bool
返回值:
如果 $var 是浮点数,返回 true
否则返回 false
我们可以结合 array_filter() 函数与 is_double() 来过滤出数组中的浮点数元素。例如:
<?php
$values = [10, 3.14, 'hello', 2.718, 42, 0.99, true];
$floats = array_filter($values, 'is_double');
print_r($floats);
?>
输出结果:
Array
(
[1] => 3.14
[3] => 2.718
[5] => 0.99
)
这里我们用 array_filter() 遍历数组中的每一个元素,并对每个元素调用 is_double()。返回的数组中只保留了浮点数。
如果你想做更复杂的检查,例如只保留大于 1.0 的浮点数,你可以使用匿名函数作为回调:
<?php
$values = [0.5, 1.5, 2, '3.0', 3.14, false];
$result = array_filter($values, function($val) {
return is_double($val) && $val > 1.0;
});
print_r($result);
?>
输出结果:
Array
(
[1] => 1.5
[4] => 3.14
)
有时候我们需要遍历数组并对每个元素进行类型检查,可以使用 foreach 循环:
<?php
$data = [1.23, '2.34', 3, 4.56, null];
foreach ($data as $index => $value) {
if (is_double($value)) {
echo "元素索引 $index 是浮点数,值为:$value\n";
} else {
echo "元素索引 $index 不是浮点数,类型为:" . gettype($value) . "\n";
}
}
?>
输出结果:
元素索引 0 是浮点数,值为:1.23
元素索引 1 不是浮点数,类型为:string
元素索引 2 不是浮点数,类型为:integer
元素索引 3 是浮点数,值为:4.56
元素索引 4 不是浮点数,类型为:NULL
设想你在构建一个简单的 API,它接受来自客户端的数字数组,并只提取浮点数来进行某些计算:
<?php
// 假设这是从 POST 请求中收到的数据
$user_input = json_decode(file_get_contents('https://gitbox.net/api/input'), true);
$floats = array_filter($user_input, 'is_double');
// 进行后续计算
$total = array_sum($floats);
echo "浮点数总和为:$total";
?>
虽然 is_double() 在实际使用中常被 is_float() 替代,但两者功能完全一致,开发者可以根据习惯选择使用哪一个。通过结合 array_filter()、匿名函数、foreach 等方法,我们可以灵活地对数组中的浮点数进行筛选和处理,提升代码的健壮性和可读性。
使用 is_double(),可以更精确地控制数据类型,为 PHP 应用提供更强的类型保障。