当前位置: 首页 > 面试题库 >

更简洁的检查数组是否仅包含数字(整数)的方法

葛雪松
2023-03-14
问题内容

如何验证数组仅包含整数值?

我希望能够检查一个数组,并最终得到一个布尔值,true如果该数组仅包含整数并且该数组中false是否还有其他字符。我知道我可以遍历数组并单独检查每个元素,然后返回truefalse取决于非数字数据的存在:

例如:

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