我知道PHP 4和PHP 5支持内置函数in_array
,用于确定元素是否在数组中。
但是,由于某种原因,我使用的是PHP的早期版本,并想知道它的替代方案。
答案 0 :(得分: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;
}
}
答案 1 :(得分:2)
如果您使用的是早于PHP 4的内容,foreach
也将无法使用,因此您需要坚持使用list
和each
。另外要使前向兼容,使用第三个参数进行严格比较:
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;
}
}
答案 2 :(得分:0)
不检查哪些版本可用的功能,并与您使用的版本进行比较(我们不是php.net百科全书),最好的办法是回到基础,然后循环检查。 / p>
function in_array($val, $array) {
foreach($array as $a) {
if($a === $val)
return true;
}
return false;
}
答案 3 :(得分: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;
}
答案 4 :(得分:0)
创建自己的数组函数,如下所示:
function my_in_array($value, $arr) {
foreach ($arr as $a) {
if ($a == $value) {
return true;
}
}
return false;
}