首頁  >  文章  >  後端開發  >  如何透過php 尋找陣列元素提高效率的方法

如何透過php 尋找陣列元素提高效率的方法

jacklove
jacklove原創
2018-06-09 09:50:112491瀏覽

1.php in_array方法說明

php找出陣列元素是否存在,一般會使用in_array方法。

bool in_array ( mixed $needle , array $haystack [, bool $strict = FALSE ] )

參數說明:
needle
待搜尋的值,如果needle是字串,比較是區分大小寫的。

haystack
用來比較的數組

strict
如果第三個參數strict 的值為TRUE 則in_array( ) 函數也會檢查needle 的型別是否和haystack 中的相同

回傳值
如果找到needle 則回傳TRUE,否則回傳FALSE

2.in_array找出元素效率

當比較的陣列haystack較大時,in_array效率會很低

範例:使用in_array對有10萬個元素的陣列進行1000次比較

<?php$arr = array();// 创建10万个元素的数组for($i=0; $i<100000; $i++){    $arr[] = $i;
}// 记录开始时间$starttime = getMicrotime();// 随机创建1000个数字使用in_array比较for($j=0; $j<1000; $j++){    $str = mt_rand(1,99999);
    in_array($str, $arr);
}// 记录结束时间$endtime = getMicrotime();echo &#39;run time:&#39;.(float)(($endtime-$starttime)*1000).&#39;ms<br>';/**
 * 获取microtime
 * @return float
 */function getMicrotime(){
    list($usec, $sec) = explode(' ', microtime());    return (float)$usec + (float)$sec;
}?>

run time:2003.6449432373ms

##使用

in_array判斷元素是否存在,在10萬個元素的陣列中比較1000次,運行時間需要約2秒

#3.提高查找元素效率方法

我們可以先使用

array_flip進行鍵值互換,然後使用isset方法來判斷元素是否存在,這樣可以提高效率。

範例:使用array_flip先進行鍵值互換,再使用isset方法判斷,在10萬個元素的陣列中比較1000次

<?php$arr = array();// 创建10万个元素的数组for($i=0; $i<100000; $i++){    $arr[] = $i;
}// 键值互换$arr = array_flip($arr);// 记录开始时间$starttime = getMicrotime();// 随机创建1000个数字使用isset比较for($j=0; $j<1000; $j++){    $str = mt_rand(1,99999);    isset($arr[$str]);
}// 记录结束时间$endtime = getMicrotime();echo &#39;run time:&#39;.(float)(($endtime-$starttime)*1000).&#39;ms<br>';/**
 * 获取microtime
 * @return float
 */function getMicrotime(){
    list($usec, $sec) = explode(' ', microtime());    return (float)$usec + (float)$sec;
}?>
run time:

1.2781620025635ms

使用

array_flipisset判斷元素是否存在,在10萬個元素的陣列中比較1000次,運行時間需要約1.2毫秒
因此,對於大數組進行比較,使用array_flipisset方法會比in_array效率高很多。

本文說明了透過php 尋找陣列元素提高效率的方法,更多相關內容請注意php中文網。

相關推薦:

關於mysql 嚴格模式Strict Mode的說明講解

php使用explode分割字串新手容易忽略的問題的講解

關於mysql互換表中兩列資料方法的解說

以上是如何透過php 尋找陣列元素提高效率的方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn