簡體   English   中英

為什么我的函數總是返回false?

[英]why does my function always return false?

為什么我的函數總是返回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";}
if(isset($fbig[$n])){

這條線就是問題所在。

  1. 你要檢查的不是isset($fbig[$n]) (它檢查索引$n中的數組中是否有東西)但是in_array($n, $fbig) (檢查數組$fbig包含價值$n )。

  2. 數組$fbig不在函數范圍內,因為它是在外部定義的。 但你可以通過它:

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

應該工作得很好。

因為你在尋找鑰匙,而不是價值

$fbig[11]未設置

你想要使用in_array()

在這種情況下,有11個項目,但它們編號從0-10,沒有11

另外,像Sarfraz說的那樣,它需要是全球性的

這是因為你的函數不知道$ 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!
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM