如何验证数组仅包含整数值?
我希望能够检查一个数组,并最终得到一个布尔值,true
如果该数组仅包含整数并且该数组中false
是否还有其他字符。我知道我可以遍历数组并单独检查每个元素,然后返回true
或false
取决于非数字数据的存在:
例如:
$only_integers = array(1,2,3,4,5,6,7,8,9,10);
$letters_and_numbers = array('a',1,'b',2,'c',3);
function arrayHasOnlyInts($array)
{
foreach ($array as $value)
{
if (!is_int($value)) // there are several ways to do this
{
return false;
}
}
return true;
}
$has_only_ints = arrayHasOnlyInts($only_integers ); // true
$has_only_ints = arrayHasOnlyInts($letters_and_numbers ); // false
但是,有没有更简洁的方法可以使用我从未想到的原生PHP功能呢?
注意:对于我当前的任务,我只需要验证一维数组。但是,如果有一种可以递归工作的解决方案,那么我将不胜感激。
$only_integers === array_filter($only_integers, 'is_int'); // true
$letters_and_numbers === array_filter($letters_and_numbers, 'is_int'); // false
将来可以帮助您定义两个辅助功能,高阶功能:
/**
* Tell whether all members of $array validate the $predicate.
*
* all(array(1, 2, 3), 'is_int'); -> true
* all(array(1, 2, 'a'), 'is_int'); -> false
*/
function all($array, $predicate) {
return array_filter($array, $predicate) === $array;
}
/**
* Tell whether any member of $array validates the $predicate.
*
* any(array(1, 'a', 'b'), 'is_int'); -> true
* any(array('a', 'b', 'c'), 'is_int'); -> false
*/
function any($array, $predicate) {
return array_filter($array, $predicate) !== array();
}
使用。但仍不确定为什么上面的方法不起作用。 不管怎样,多亏了之前有人建议这个答案。:)
问题内容: 我想检查a是否仅包含数字。我用这个: 但意识到它也允许和。基本上,我要确保只能包含数字,而不能包含其他字符。由于和都是数字,所以不是正确的方法。也许我需要一个正则表达式?有小费吗? 问题答案: 怎么样
这可能吗?如果可能,我该如何正确地做到这一点?希望能够检查它是否包含1和2,如果是,继续与程序。
问题内容: 基本上,我的同伴一直在说,我可以使用另一种检查int数组是否包含int的方法来缩短代码,尽管他不会告诉我它是什么:P。 当前: 也尝试过此方法,尽管由于某种原因它总是返回false。 有人可以帮我吗? 谢谢。 问题答案: 这是Java 8解决方案
基本上,我的朋友一直在说,我可以通过使用不同的方法来检查int数组是否包含int来缩短我的代码,尽管他不会告诉我它是什么:p。 当前: 也试过了,尽管由于某种原因它总是返回false。 有人能帮帮我吗? 谢谢你。
问题内容: 我正在尝试检测字符串是否包含至少一个存储在数组中的URL。 这是我的数组: 该字符串由用户输入并通过PHP提交。在确认页面上,我想检查输入的URL是否在数组中。 我尝试了以下方法: 无论输入什么,返回值始终为“找不到匹配项”。 这是正确的做事方式吗? 问题答案: 尝试这个。 如果要检查不区分大小写,请使用stristr()或stripos()。