PHP從陣列中找到指定元素的位置

2021-09-08 14:04:32 字數 1267 閱讀 1956

群裡有人問,有個陣列五個元素 分為1到5  現在要求 迴圈找出3元素的索引,怎麼做效能才是最高。 

我不知道哪個效能最高,但是我想提出可以用多種方式進行查詢,然後進行比較選擇。

我想,最簡單最基礎的 應該是迴圈,迴圈到它,那就是它。當然也可以用php提供的陣列查詢 array_search。這都是能想得到的,那麼我想說的是,劍走偏鋒,老鐵是否嘗試過 鍵值反轉進行查詢呢?

array_flip鍵值反轉,能夠將你需要的鍵變值,值變鍵,然後取陣列下標,即可得到這個位置。

**如下:

<?php 

$array=array(2,3,4,1,5);

//找到3所處的位置

$find=3;

//第一種方式 迴圈解決 此舉類似於 for while等迴圈

function find_by_foreach($array,$find

) }}//

第二種方式 利用陣列查詢 找到所需要元素的索引位置

function find_by_array_search($array,$find)//

第三種方式 鍵值反轉 通過值查詢鍵

function find_by_array_flip($array,$find

)var_dump(find_by_foreach($array,$find

));var_dump(find_by_array_search($array,$find

));var_dump(find_by_array_flip($array,$find));

效果如圖: 

好,我們再考慮乙個問題,剛剛我們都在用陣列的思維進行解決問題,如果說,這個陣列不想被迴圈,或者放棄陣列的思路又該如何解決呢?

很自然,我們可以想到依靠字串。那麼字串的函式也是非常多的,php在這方面的功勞是不遺餘力。

**如下:

<?php 

//第四種方式 字串查詢

function find_by_string($array,$find

)

效果如圖:

針對本題而言,字串查詢是可行的,但是如果換乙個場景,陣列**現了重複或者要查詢的元素,不能出現完整匹配的情況的時候,這個查詢就是失敗的,請思考一下這是為什麼。

有序陣列中找到指定字元出現的次數

解題思路 跟統計字元出現的次數最多是一樣的道理,將給出的列表中資料放在字典中,字典裡面是很好統計次數 然後確定想要的指定字元是哪個 最後對字典進行遍歷,確定key與指定的字元相同的那個資料 list1 s d s a sdf asd a s dicts for i in list1 dicts i ...

由無序陣列中找到第K 大的元素

當然如果我們想要實現這個問題會有很多思路,可以將原來的陣列進行排序即可,直接隨機訪問到第k個元素即可。我們專門寫一篇部落格當然不是想利用這種思路的,可以試試改進的快速排序啊,對不,我個人覺得是利用了兩種思路乙個是快速排序乙個是二分查詢,在進行快速排序的時候,在指定範圍內找到該值的下標,如果該下標與k...

php陣列指定元素去重,php 陣列元素快速去重

搜尋熱詞 1.使用array unique方法進行去重 對陣列元素進行去重,我們一般會使用array unique方法,使用這個方法可以把陣列中的元素去重。php 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 去重後,鍵值會不按順序,可以使用array values把鍵值重新排序。...