2017-12-15 19 views
-4

私はそれは簡単だと思いますが、何らかの方法で行うことができないと私はそれに関する情報を見つけることができません。文字列で一意の整数値を取得する

私はいくつかのPHPの文字列を持っている:

$a = "yellow"; 
$b = "green"; 
$c = "blue"; 
$d = "black"; 
$e = "blue"; 

私は一意の整数値がIDのように使用して取得する必要があります。このような何か:

$a = 31; 
$b = 52; 
$c = 11; 
$d = 43; 
$e = 11; 

私はordを使用してみてくださいだけでは動作しませんblueblackと私の例では、その後、最初のcharactherを取得します。

md5で数字と文字を取得しました。私は整数が必要です。

echo md5("blue"); // this returns 48d6215903dff56238e52e8891380c8f 
echo ord("blue"); // this returns 98 
echo ord("back"); // this returns 98 
+2

はあなたを行いますランダムな一意の数を意味するか、または一定の時間にわたる定数?ところで、これらの値をすべて配列に入れるだけで、インデックスをユニークな値としてIDとして使用できます。 –

+0

あなたのコードを共有する..? – Bhargav

+1

ここで何を達成したいのかは私には分かりません。インクリメント値を識別子として割り当てることはできませんか?またはランダム化されたユニークな値? – David

答えて

0

PHPには、値をintに格納するための制限がありますが、文字列は制限された長さではありません。理論的には、時には常に衝突があります。

したがって、任意の長さの文字列を任意の長さの整数に圧縮する必要があります。これはデータを失うことなく不可能です。

ハッシュアルゴリズムを使用することはできますが、一致させることもできます。自動インクリメントは使用できませんか?

+0

データベースに固有IDがなく、文字列キーしかないため、JSONを生成するためのIDを作成する必要があります。 – kurtko

0

あなたが本当にIDが何であるかを気にしない場合、あなたはユニークな配列からインデックスを使用することができますが:

$a = "yellow"; 
$b = "green"; 
$c = "blue"; 
$d = "black"; 
$e = "blue"; 

$values = array($a, $b, $c, $d, $e); 
$indexes = array_unique($values); 

// print the index for the value 
echo array_search($c, $indexes); // echos out "2" 


インデックスの配列は次のようになります。

Array 
(
    [0] => yellow 
    [1] => green 
    [2] => blue 
    [3] => black 
) 
関連する問題