php - 返回多个数字之一的最大值并验证参数是否为数字的函数
问题描述
我正在编写一个名为 max_number 的函数,它返回数字变量的最大值。如果参数之一不是数字,则返回 false。使用 is_numeric() 函数。但该函数总是返回 false。我会做错什么吗?
代码和这个:
<?php
function max_number()
{
$args = func_get_args();
if( $args !== null && !is_numeric($args)){
echo "false";
}
else{
echo "Maximo number is: " . max($args);
}
}
max_number(1,2,3,4,5);
?>
解决方案
在您的代码$args
中是一个数组,并且is_numeric($args)
将始终返回false
.
您需要$args
单独检查每个元素。
<?php
function maxNum() {
$args = func_get_args();
return ($args === array_filter($args,'is_numeric'))?max($args):false;
}
echo maxNum(1,2,3,4,5); // 5
echo maxNum(1,"No!",3,4,5); // false
推荐阅读
- python - 如何解决Linux中IndexError的问题
- selenium - 通过 xpath 查找元素 - lxml 和 Selenium 导致相同表达式的不同输出
- ios - IOS上触摸的绝对位置
- php - 如何在会话语句中添加 html 代码
- c# - 多个 ASP.NET MVC webclient 通过 Web-API 2 进行身份验证和授权身份 + JWT
- azure - 如果 SQL Server 实例上的需求意外增长,在 Azure 中进行扩展有多容易?
- python - 将 python 字典从外部文件导入主文件时出现 ast.literal_eval 错误
- rabbitmq - 为什么 RabbitMQ / AMQP 中的 delivery_mode 不是布尔值?
- java - Swagger 2.0:swagger-ui 页面显示默认 api 信息而不是我设置的自定义 api 信息
- android - 错误:[Dagger/MissingBinding] androidx.lifecycle.ViewModelProvider.Factory 不能在没有@Provides-annotated 方法的情况下提供