我写的在数组中查找指定字符串的函数
在数组种查找字符串的传统方法是遍厉数组,逐个比较。有没有更好的方法呢?
笔者尝试写了以下函数:
/***********************************************************************
函数名:    is_string_in_array
参数类型:  string,array,char
参数说明:  要查找的字符串,查找的字符串的数组,填充字符串的字符(把数组转为字符串时使用)_缺省为“,"
返回类型:  BOOL
返回值:    查到:TRUE; 没查到:FALSE
说明:       判断一个数组中有没有给定的字符串
************************************************************************/

function is_string_in_array($t_string,$t_array,$fill_char=',')
{
    $array_string=implode($t_array,$fill_char);
    $array_string=$fill_char.$array_string;
    $array_string.=$fill_char;
    if(ereg($fill_char.$t_string.$fill_char,$array_string))
        return TRUE;
    else 
       return FALSE;
}
基本思路是把数组合并为字符串,然后用正则表达式匹配。经过测试效率要高于
传统的方法。不足之处,请各位指正。测试程序附下:
<?php
function is_string_in_array($t_string,$t_array,$fill_char=',')
{
    
$array_string=implode($t_array,$fill_char);
    
$array_string=$fill_char.$array_string;
    
$array_string.=$fill_char;
    if(
ereg($fill_char.$t_string.$fill_char,$array_string))
        return 
TRUE;
    else 
       return 
FALSE;
}
function 
is_string_in_array_old($t_string,$t_array)
{
    foreach (
$t_array as $value)
    {
        if(
$t_string==$value)
           return 
TRUE;
    }
    return 
FALSE;
}
$test_array=array("安徽","北京","福建","甘肃","广东","广西","贵州","海南","河北"
                
"河南","黑龙江","湖北","湖南","吉林","江苏","江西","辽宁",      
                
"内蒙古","宁夏","青海","山东","山西",    "陕西","上海","四川",   
                
"天津","新疆","西藏","云南","浙江","重庆","香港","澳门","台湾");
echo 
date("s秒n");
for(
$i=0;$i<10000;$i++)
    echo 
is_string_in_array_old('台湾',$test_array);
echo 
date("s秒n");
for(
$i=0;$i<10000;$i++)
    echo 
is_string_in_array('台湾',$test_array);
echo 
date("s秒n");
?>