佳木斯湛栽影视文化发展公司

主頁 > 知識庫 > PHP內部實現打亂字符串順序函數str_shuffle的方法

PHP內部實現打亂字符串順序函數str_shuffle的方法

熱門標簽:阿里云 團購網站 Linux服務器 銀行業(yè)務 Mysql連接數設置 科大訊飛語音識別系統(tǒng) 電子圍欄 服務器配置

前言

2019年春節(jié)已過,今天是上班第一天,還得翻一翻之前沒有看完的PHP源碼。

今天聊的是字符串順序打亂函數str_shuffle。這個函數本身使用頻率并不高。但是,其內部實現還是非常有趣的。

str_shuffle() 函數隨機地打亂字符串中的所有字符。

要注意,打亂的是字符串中的“字符”

  • 一個字母等于一個字符
  • 一個漢字等于2個字符

自己實現

如果在沒有看PHP源碼內部實現之前,如果使用php實現內部字符串打亂順序的操作,我能想到的是下面幾種方式。

循環(huán)隨機數

使用隨機數,可以有隨機取字符串的字符拼接,或者順序取出,放到隨機數自定的位置。這兩種方式都涉及到隨機數重復的情況,需要去重。

這種方式的重點在于生成不重復的隨機數。

切分成數組然后打亂順序


用數組打亂順序的方式實現其實是有些“作弊”嫌疑。

PHP內部實現

來看看PHP內部如何實現。

其實PHP內部也是使用隨機數實現,但是他的巧妙之處在于使用隨機數抽取字符串與一個特定的字符串(最后一個)進行替換。這樣就不用去考慮隨機數重復的問題。不會因為重復到賬一些字符串被覆蓋。

文章開始的隨機數抽取,不能保證經過n次后結束,因為需要跳過隨機數重復的情況。但是php內部的實現,都是n次循環(huán)后結束。在性能上肯定比需要去重的隨機數方法要好。

兩個方法的出發(fā)點都一樣,但是稍微的不一樣就可以帶來很大的提升。

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。

您可能感興趣的文章:
  • php使用str_shuffle()函數生成隨機字符串的方法分析

標簽:大理 廣元 棗莊 萍鄉(xiāng) 衢州 衡水 蚌埠 江蘇

巨人網絡通訊聲明:本文標題《PHP內部實現打亂字符串順序函數str_shuffle的方法》,本文關鍵詞  ;如發(fā)現本文內容存在版權問題,煩請?zhí)峁┫嚓P信息告之我們,我們將及時溝通與處理。本站內容系統(tǒng)采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266
    四会市| 淅川县| 竹溪县| 鸡西市| 延吉市| 潍坊市| 福清市| 图们市| 高碑店市| 华安县| 龙胜| 克拉玛依市| 寿阳县| 海林市| 德惠市| 天水市| 大荔县| 临城县| 竹北市| 彰化市| 石屏县| 勃利县| 巧家县| 崇仁县| 海淀区| 敦化市| 广水市| 沙雅县| 综艺| 山西省| 威海市| 淮北市| 拜泉县| 临沧市| 遵义市| 辽宁省| 沙湾县| 凤城市| 闽侯县| 崇信县| 宿州市|