2013-08-07 40 views

回答

4

使用自定義功能。爲了將來的兼容性,您可以使用function_exists來檢查您當前使用的PHP版本是否確實有in_array

function inArray($needle, $haystack) 
{ 
    if (function_exists('in_array')) { 
     return in_array($needle, $haystack); 
    } else { 
     foreach ($haystack as $e) { 
      if ($e === $needle) { 
       return true; 
      } 
     } 

     return false; 
    } 
} 
+0

我想知道爲什麼接受這種方式,因爲如果沒有函數'in_array',也沒有循環'foreach'。兩者都是在PHP 4的第一個版本中引入的。更好的答案是由dev-null-dweller給出的:檢查函數是否不可用,並且只用相同的名稱定義它,以及基本的千年前PHP。 – Sven

0

如果不檢查哪些功能在哪些版本中可用,並與您使用的版本(我們不是php.net百科全書)進行比較,那麼最好的辦法是回到基礎知識,然後循環查看。

function in_array($val, $array) { 

    foreach($array as $a) { 

     if($a === $val) 
      return true; 

    } 

    return false; 

} 
0

您可以

function my_in_array($ar, $val) 
{ 
    foreach($ar as $k => $v) 
    { 
    if($v == $val) return true; 
    } 
    return false; 
} 

創建自己的功能,模仿功能,或者如果你是一個關鍵

function my_in_array($ar, $val) 
{ 
    foreach($ar as $k => $v) 
    { 
    if($k == $val) return true; 
    } 
    return false; 
} 
0

在陣列功能類似下面創建自己:

function my_in_array($value, $arr) { 
    foreach ($arr as $a) { 
     if ($a == $value) { 
      return true; 
     } 
    } 
    return false; 
} 
2

如果你正在使用的東西比PHP 4,foreach年長也將不可用,所以你需要堅持listeach 。也爲了在向前兼容,使用第三個參數進行嚴格比較:

if (!function_exists('in_array')) { 
    function in_array($needle, $haystack, $strict = false) { 
     while (list($key, $item) = each($haystack)) { 
      if ($strict && $needle === $item) { 
       return true; 
      } else if (!$strict && $needle == $item) { 
       return true; 
      } 
     } 
     return false; 
    } 
}