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 '%關鍵字%'