php 查詢陣列元素提高效率方法

2021-07-09 18:49:10 字數 1920 閱讀 2073

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次比較

<?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

()?>

run time:2003.6449432373ms

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

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

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

<?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

()?>

run time:1.2781620025635ms

使用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 目標 必須要有目標,沒有目標和方向效率會大大的折扣.當然不僅僅是學習,更是生活,事業,和人的整個一生.這點公尺老師非常的重視,每個學習階段都給...