2017-02-16 32 views
-2

(這個問題是不是 PHP的類型轉換。)如何將字符串轉換爲PHP中的整數?

我已經閱讀幾個問題是什麼,最好不要顯示記錄ID給用戶,而是用另一種價值,這並沒有給出來任何關於howmany在數據庫中記錄的信息等等。我想實現這一點,並且在google上搜索後,竟然找不到解決方案。因此,我的問題是,是否有可能將字符串序列轉換爲唯一的(或者對於至少數百萬次轉換來說是足夠獨特的)數字序列,是否有任何可用的選項,我沒有想法? 只是爲了顯示你一個例子:

$uName = $this->newUsername; 
$publicId = $this->strToInt(somecomplexstring); // Outputs something like 13272992 
// Or feed with username 
$publicId = $this->strToInt($uName); 
+0

您可以使用uniqueid –

+0

當然,您的問題是回到前面,將數字ID'(整數)'更改爲不顯示索引數量的人類可讀字符串?你的複雜字符串如何告訴我有多少記錄? – Luke

+0

uniqid - 生成唯一的ID回顯uniqid(); – JYoThI

回答

1

你可能會考慮使用類似蛞蝓。所以你的用戶將在數據庫中有一個唯一的id,但也是一個獨特的slug(隨機字符串,例如TGqJItemU5TGqJItemU5f6S5VaCr2n)。當向瀏覽器呈現數據時,您可以使用這個slug代替id。

+0

確實,這確實是另一種選擇 –

-1

您可以使用:

MD5(uniqid(RAND(),TRUE))

+0

我不是在談變量類型 –

+0

他想隱藏記錄的數量,所以用戶150不知道他是用戶150 – Luke

+0

好的。看到我編輯的答案。它會幫助你。 –

0

正如評論所說,你可以使用uniquid得到一個唯一的字符串。這個函數將返回一個十六進制字符串。

如果您只需要數字,您只需將十六進制數轉換爲十進制數就可以使用這個hexdec

最後的代碼如下所示:

hexdec(uniqid()); 

的其他方式來獲得一個整數,字符串是使用md5。這個功能也返回一個十六進制字符串,所以你將不得不使用hexdec得到一個十進制數

請注意,MD5是不是唯一的字符串,有340 undecillion意外碰撞(1的(很小)的概率,請參見How many random elements before MD5 produces collisions ?以獲取更多信息)

+0

謝謝,我會研究一下hexdec函數 –