PHP查找法
1. php的二分查找法
round改成ceil,口号里面两个变量也忘记加$符号了
2. PHP在文中查找包含关键词的方法
if(stripos($title,"关键词")==1){
echo "成功";
}
如果多个就用>来表示。
如果你只要查找一个的话,就用数字1
多个用>
stripos是检测关键词的数量的,你要理解好这个
3. PHP如何实现折半查找算法
定义:折半查找技术,也就是二分查找。它的前提是线性表中的记录必须是关键码有序(通常从大到小有序),线性表必须采用顺序存储。
折半查找的基本思想:取中间记录作为比较对象,若给定值与中间记录的关键字,则在中间记录的关键字相等,则查找成功;若给定值小于中间记录的作伴去继续查找;若给定值大于中间记录的关键字,则在中间记录的右半区继续查找。不断重复上述过程,直到查找成功,或所有查找区域无记录,查找失败为止。
实现代码:
<?php //递归方式 function bin_recur_search($arr,$val){ global $time; if(count($arr) >= 1){ $mid = intval(count($arr) / 2); $time++; if($arr[$mid] == $val){ return '值为:'.$arr[$mid].'<br>查找次数:'.$time.'<br>'; }elseif($arr[$mid] > $val){ $arr = array_splice($arr,0,$mid); return bin_recur_search($arr, $val); }else{ $arr = array_slice($arr,$mid + 1); return bin_recur_search($arr, $val); } } return '未找到'.$val; } //非递归方式 function bin_search($arr,$val){ if(count($arr) >= 1){ $low = 0; $high = count($arr); $time = 0; while($low <= $high){ $time++; $mid = intval(($low + $high)/2); if($val == $arr[$mid]){ return '索引:'.$mid.'<br>值为:'.$arr[$mid].'<br>查找次数:'.$time; }elseif($val > $arr[$mid]){ $low = $mid + 1; }else{ $high = $mid - 1; } } } return '未找到'.$val; } $arr = array(1,3,5,7,7,9,25,68,98,145,673,8542); echo bin_recur_search($arr, 673); echo bin_search($arr, 673); ?>
运行结果:
值为:673 查找次数:4 索引:10 值为:673 查找次数:4
更多关于PHP相关内容感兴趣的读者可查看本站专题:《PHP数据结构与算法教程》、《php程序设计算法总结》、《php字符串(string)用法总结》、《PHP数组(Array)操作技巧大全》、《PHP常用遍历算法与技巧总结》及《PHP数学运算技巧总结》
4. PHP二分查找算法的实现方法示例
本文实例讲述了PHP二分查找算法的实现方法。分享给大家供大家参考,具体如下:
二分查找法需要数组是一个有序的数组
假设我们的数组是一个递增的数组,首先我们需要找到数组的中间位置.
1.
要知道中间位置就需要知道起始位置和结束位置,然后取出中间位置的值来和我们的值做对比。
2.
如果中间值大于我们的给定值,说明我们的值在中间位置之前,此时需要再次二分,因为在中间之前,所以我们需要变的值是结束位置的值,此时结束位置的值应该是我们此时的中间位置。
3.
反之,如果中间值小于我们给定的值,那么说明给定值在中间位置之后,此时需要再次将后一部分的值进行二分,因为在中间值之后,所以我们需要改变的值是开始位置的值,此时开始位置的值应该是我们此时的中间位置,直到我们找到指定值。
4.
或者中间值等于最初的起始位置,或结束位置(此时说明给定值未找到),下面我们来用代码实现~
//循环实现
function
getValue($num,$arr)
{
//查找数组的中间位置
$length=count($arr);
$start=0;
$end=$length;
$middle=floor(($start+$end)/2);
//循环判断
while($start>$end-1)
{
if($arr[middle]==$num)
{
return
middle+1;
}
elseif($arr[middle]<$num)
{
//如果当前要查找的值比当前数组的中间值还要打,那么意味着该值在数组的后半段
//所以起始位置变成当前的middle的值,end位置不变。
$start=$middle;
$middle=floor(($start+$end)/2);
}
else{
//反之
$end=$middle;
$middle=floor(($start+$end)/2);
}
}
return
false;
}
//递归实现
/*
*
从数组中获取元素值
*
@param1
int
$num,要查找的目标值
*
@param2
array
$arr,要查找的数组
*
@param3
int
$start,查找的起始位置
*
@param4
int
$end,查找的结束位置
*
@return
mixed,找到了返回位置,没找到返回false
*/
function
getValue4($num,$arr,$start
=
0,$end
=
100){
//采用二分法查找
$middle
=
floor(($end
+
$start)
/
2);
//判断
if($arr[$middle]
==
$num){
//已经找到了,递归的出口
return
$middle
+
1;
}elseif($arr[$middle]
<
$num){
//要查找的元素在数组的后半段
$start
=
$middle
+
1;
//边界值
if($start
>=
$end){
//没有找到,但是已经超出边界值,递归出口
return
false;
}
//调用自己去查找:递归点
return
getValue4($num,$arr,$start,$end);
//getValue4($num,$arr,51,100)
}else{
//要查找的元素在数组的前半段
$end
=
$middle
-
1;
//判断边界值
if($end
<
0)return
false;
//调用自己:递归点
return
getValue4($num,$arr,$start,$end);
//getValue4($num,$arr,0,49)
}
//都没有找到
return
false;
}
更多关于PHP相关内容感兴趣的读者可查看本站专题:《PHP数据结构与算法教程》、《PHP基本语法入门教程》、《php面向对象程序设计入门教程》、《php字符串(string)用法总结》及《php查找技巧与方法总结》
希望本文所述对大家PHP程序设计有所帮助。
5. PHP循环查找
function str_substr($start, $end, $str) // 字符串截取函数
{
$temp = explode($start, $str, 2);
$content = explode($end, $temp[1], 2);
return $content[0];
}
$biaoti=str_substr("<span><b>", "</b>", $getstr);
echo $biaoti;
你输出的是一个数组,你要输出的是值么?
6. PHP怎样实现查询
$id = intval(_POST("putID"));//putID是前台"input"插件的"name"可以输入1或2、3
$query = "SELECT * FROM table1 WHERE id='".$id."'";
$result= mysql_query($query);
$row = mysql_fetch_array($result);
$name = $row['name'];
echo $name;//输出
7. php中几个常用的字符串查找函数
PHP字符串查找的函数的函数比较多,这里演示下常用几种使用方法:
?php//1.strstr()函数:用于获取一个指定字符串在另一个字符串中首次出现的位置开始,直到结束的子字符串,//如果执行成功,则返回剩余字符串;否则返回false。echo
strstr("..com","");
//.com
//2.
strpos()函数:返回字符串在另一个字符串中第一次出现的位置。如果没有找到字符串,则返回false。$str
=
'hello,iam!';$find
=
'';if(strpos($str,$find)!==false){echo
'字符串包含:!';}else{echo
'字符串不包含:!';}//输出结果:字符串包含:!
//返回字符串在str中第一次出现的位置echo
strpos($str,$find);//14?
8. PHP文本数据库的搜索方法
PHP文本数据库的搜索方法
searchstr=("/".preg_quote($searchstr)."/");
//$searchstr是查找的关键字
$records=file($file);//获取所有的记录数
//$file是查找的数据文件
$search_reocrds=preg_grep
($searchstr,
$records);//开始查找记录
//$search_reocrds为查找到的记录数
unset($records);
if($search_records){
//开始显示记录,写下你自己的处理程序********************
while
(list
($key,
$val)
=
each
(
$search_records))
{
echo
"$val
";
}
//****************************************************
}
9. 求php快速查找读取文件的方法
如果只有文件夹只有一层 就很容易代码如下
if(file_exists('001/abc.txt')){
$str=file_get_contents('001/abc.txt');
}elseif(file_exists('002/abc.txt')){
$str=file_get_contents('002/abc.txt');
}elseif(file_exists('003/abc.txt')){
$str=file_get_contents('003/abc.txt');
}else{
$str='没有找到abc.txt';
}
echo $str;
如果不确定是否是多层 文件夹 那么就用递归方法 比较麻烦 代码如下
function find_file($dir){
$str='';
if(file_exists($dir.'/abc.txt')){
$str=$dir.'/abc.txt';
}else{
$dh=opendir($dir);
while($file=readdir($dh)){
if($file!="."&&$file!=".."){
$fullpath=$dir.'/'.$file;
if(is_dir($fullpath)){
$str=$find_file($fullpath);
}
if($str){break;}
}
}
closedir($dh);
}
return $str;
}
$arr=array('001','002','003');
$str='没有找到abc.txt';
foreach($arr as $val){
$dir=find_file($val);
if($dir){
$str=file_get_contents($dir);
break;
}
}
echo $str;
10. 如何在PHP中做更多的查找
PHP的站内搜索可以使用SELECT和LIKE语句来对文章的标题进行过滤选择,将需要的数据筛选出来。 如果有多个筛选可以使用AND语句连接起来进行多条语句筛选。 如果希望是能搜索到全站所有的数据,一般在数据库设计之初最好就是把所有数据放一个表,然后通过扩展表的方式进行数据扩展!具体方法可以参考ONETHINK的设计模式。
具体搜索方法: SELECT * FROM 表名 WHERE 字段 LIKE '%关键字%'