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。
當比較的陣列haystack較大時,in_array效率會很低
例子:使用in_array對有10萬個元素的陣列進行1000次比較
run time:2003.6449432373ms<?php
$arr = array();
// 建立10萬個元素的陣列
for($i=0; $i
<100000; $i++)
// 記錄開始時間
$starttime = getmicrotime();
// 隨機建立1000個數字使用in_array比較
for($j=0; $j
<1000; $j++)
// 記錄結束時間
$endtime = getmicrotime();
echo
'run time:'.(float)(($endtime-$starttime)*1000).'ms
';/**
* 獲取microtime
*@return float
*/function
getmicrotime
()?>
使用in_array判斷元素是否存在,在10萬個元素的陣列中比較1000次,執行時間需要約2秒
我們可以先使用array_flip進行鍵值互換,然後使用isset方法來判斷元素是否存在,這樣可以提高效率。
例子:使用array_flip先進行鍵值互換,再使用isset方法判斷,在10萬個元素的陣列中比較1000次
run time:1.2781620025635ms<?php
$arr = array();
// 建立10萬個元素的陣列
for($i=0; $i
<100000; $i++)
// 鍵值互換
$arr = array_flip($arr);
// 記錄開始時間
$starttime = getmicrotime();
// 隨機建立1000個數字使用isset比較
for($j=0; $j
<1000; $j++)
// 記錄結束時間
$endtime = getmicrotime();
echo
'run time:'.(float)(($endtime-$starttime)*1000).'ms
';/**
* 獲取microtime
*@return float
*/function
getmicrotime
()?>
使用array_flip與isset判斷元素是否存在,在10萬個元素的陣列中比較1000次,執行時間需要約1.2毫秒
因此,對於大陣列進行比較,使用array_flip與isset方法會比in_array效率高很多。
如何提高效率
如果問 你想不想使自己的收入加倍 我猜每個人的答案都是 yes 如果我繼續問 你相不相信現在你的收入會加倍 我想有一些人可能會沒把握,有一些人認為不太可能,我告訴各位 你們每個人的收入一定會加 倍 因為按照每年物價增長率及通貨膨脹的正常速度,20年後你的收入一定會加倍。但是如果你希望,提前在5年內 ...
Python 提高效率
最近師兄給了小任務,算乙個p值。任務詳情是這樣的 第一步,有基因集a,23個元素,基因集b,451個元素,共有23 451 9922個組合 當然你要考慮去重 看在ppi資料庫 145萬多行資料 中出現的組合總個數 觀察值 第二步,然後再以hg19中基因為背景基因集,放回隨機抽取23個基因構成基因集c...
如何提高效率
在提高班學習有很長的一段時間了,學習的收穫中有一點是非常的明顯,那就是自己的效率明顯的比原來高出許多,現在就按照自己的切身體會來總結一下如何提高自己效率.1 目標 必須要有目標,沒有目標和方向效率會大大的折扣.當然不僅僅是學習,更是生活,事業,和人的整個一生.這點公尺老師非常的重視,每個學習階段都給...