为什么我的函数总是返回 false?

发布于 2024-12-15 00:31:13 字数 469 浏览 0 评论 0原文

为什么我的函数总是返回 false? 我认为问题是由 isset 函数引起的,但我真的不知道如何解决它

$big = array(
2,3,5,7,11,13,17,19,23
,29,31,37);

$fbig = array_flip ($big);


function isprime($n){
    if($n < 2){
        return FALSE;
    }
    if($n > 2147483647){
        return FALSE;
    }
    if($n < 46341){ 
        if(isset($fbig[$n])){


            return TRUE;
        } else {
            return FALSE;
        }
    }
}

$b = 11;
if(isprime($b)){echo "lol";}

why does my function always return false?
i think the problem is caused by the isset function but i really dont know how to fix it

$big = array(
2,3,5,7,11,13,17,19,23
,29,31,37);

$fbig = array_flip ($big);


function isprime($n){
    if($n < 2){
        return FALSE;
    }
    if($n > 2147483647){
        return FALSE;
    }
    if($n < 46341){ 
        if(isset($fbig[$n])){


            return TRUE;
        } else {
            return FALSE;
        }
    }
}

$b = 11;
if(isprime($b)){echo "lol";}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

梦开始←不甜 2024-12-22 00:31:13
if(isset($fbig[$n])){

这条线就是问题所在。

  1. 您要检查的不是 isset($fbig[$n]) (它检查数组中索引 $n 处是否有内容),而是in_array($n, $fbig) (检查数组 $fbig 是否包含值 $n)。

  2. 数组$fbig不在函数的范围内,因为它是在外部定义的。但您可以传递它:

if(isprime($b, $fbig)){echo "lol";}

应该可以正常工作。

if(isset($fbig[$n])){

This line is the problem.

  1. What you want to check is not isset($fbig[$n]) (which checks if there is something in the array at the index $n) but in_array($n, $fbig) (which checks if the array $fbig contains the value $n).

  2. The array $fbig is not in the scope of the function since it's defined outside. But you can pass it:

if(isprime($b, $fbig)){echo "lol";}

should work just fine.

草莓味的萝莉 2024-12-22 00:31:13

因为您要查找的是键,而不是值

$fbig[11] 未设置,所以

您需要使用 in_array()

在这种情况下,有 11 个项目,但它们的编号是从0到10,没有11

加上,就像萨弗拉兹所说,它需要是全球性的

because your looking for a key, not a value

$fbig[11] is not set

you'll want to use in_array()

in this case, there are 11 items, but they are numbered from 0-10, no 11

plus, like Sarfraz said, it needs to be global

半寸时光 2024-12-22 00:31:13

这是因为你的函数不知道 $fbig 是什么。一个快速解决方法是将您的函数更改为如下所示:

function isprime($n){

    global $fbig;

    if($n < 2){
        return FALSE;
    }
    if($n > 2147483647){
        return FALSE;
    }
    if($n < 46341){ 
         return isset($fbig[$n]); // Nit picking fix!
    }
}

It's because your function doesn't know what $fbig is. A quick fix would be to change your function to look like this:

function isprime($n){

    global $fbig;

    if($n < 2){
        return FALSE;
    }
    if($n > 2147483647){
        return FALSE;
    }
    if($n < 46341){ 
         return isset($fbig[$n]); // Nit picking fix!
    }
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文