2013-08-07 43 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; 
    } 
} 
相关问题