• ベストアンサー

PHPでユニークIDを作る

phpで5桁程度のユニークIDを生成したいと思っています。 5ケタでなくてもそれぐらいの桁数なら大丈夫です。 uniqid()という関数を使うとなると桁数が多すぎて扱いにくいので困っています。 なにかいい方法がありましたら是非教えてください。よろしくお願いします。

  • PHP
  • 回答数2
  • ありがとう数2

質問者が選んだベストアンサー

  • ベストアンサー
  • tom951
  • ベストアンサー率30% (29/96)
回答No.1

・乱数で作ってそれが現状で使われているIDかを保存してあるキー情報と見比べる。 ・連番を使う。(数字のみでなくてアルファベットを使うなら文字コードで) >uniqid()という関数を使うとなると桁数が多すぎて扱いにくいので困っています。 プログラム無いではなくて人間が視覚的認識して利用するのですか?

pop4532
質問者

お礼

ご回答ありがとうございます。 面倒ですが、連番が良さそうですね…。 >プログラム無いではなくて人間が視覚的認識して利用するのですか? 人間がIDを見て判別するわけではありませんが、ファイルの名前につけたりなど、用途はいろいろ考えています。 単純に、桁数の違うユニークIDは作れないものかと思ったのもあります。

その他の回答 (1)

noname#87667
noname#87667
回答No.2

No.1の方の意見に同意です。意図が全くわかりません。「ユニークID」とおっしゃっていますが、DBレスで使うのであれば、テキストファイルを用意して、それを全行検索して、なければ書き込む、あれば作り直すという作業も発生しますが、それでよろしいのでしょうか。 とりあえず、こんな関数を作ってみたので、使ってみてください。 # 動作検証は一切していません。 # $arrayのところは適当に書き換えてください。 /** ランダム文字列生成関数 */ function makeRandomString(){ // ユニークIDのタネ $array = array(0,1,・・・,9,a,b,・・・,z,A,B,・・・,Z); // ユニークIDは5桁で作成 $keta = 5; $result = ""; for($i=0;$i<$keta,$i++){ $result.= array_rand($array,1); } return $result; }

pop4532
質問者

お礼

ご回答ありがとうございます。 ありがたいのですが、ランダムな5桁だとユニークとは言えないのでちょっとこれは扱えないですね。。。 すみません。

関連するQ&A

  • PHPのuniqidの被る確率について

    現在、とあるサービスで、PHPのuniqidというメソッドを使って、ユニークなIDとして使っているのですが、この関数が被る確率はどうやって計算すればよいのでしょうか。

    • ベストアンサー
    • PHP
  • web上でよくみかけるユーザIDとパスワードについて

    ユーザIDの桁数とかは何桁で設定するのがよろしいでしょうか?桁数によってセキュリティーレベルが変わるのでしょうか? よろしくお願いします。

  • 【PHP】printf()関数の小数点以下の扱い方

    printf()関数で以下のような記述をしました。 関数の引数を計算すると単純で 5 × (1 - 0.35) で結果は 3.25 となります。 これを$%.1f によって出力するため小数点以下は1桁です。 桁数を指定した場合、指定し桁数以下は「四捨五入」されると思っていました。 よって、自分では Price: 3.3 と出力されると考えていましたが 実際には Price: 3.2 と表示されます。 ちなみに 3.25 を round() 関数で使うと 3.3 と返ってきます。 printf()関数で小数点以下の桁数をしてした場合、四捨五入、切り上げ、切り捨て いずれでもない値が返ってくるのでしょうか? このような小数点以下の桁数を扱う方法はPHPの他の関数でも使われるのでしょうか? この方法の呼称というか名称というのはあるのでしょうか? 初学者です。分かりやすく教えていただければ幸いです。 よろしくお願いいたします。! <表示結果> Price: $3.2 3.3 <?php $price = 5; $off = 0.35; printf("Price: $%.1f", $price * (1 - $off)); echo "<br>\n"; echo "<br>\n"; echo round(3.25, 1); ?>

    • ベストアンサー
    • PHP
  • 画像からユニークなIDを生成するアルゴリズム

    画像データからユニークなIDを生成したいです。 データ元は、ファイル名やメタデータを含まない、画像データ本体のみという事にします。 可逆性は問わないので、元の画像を推測出来ても出来なくても、どちらでも構いません。 こだわりたいのは、同一データからは必ず同一IDになるということと、 別の画像から同一IDが生成される可能性を極力排除したいということです。 IDの形式や桁数はこだわりません。 色から生成したIDと画像サイズ値をセットにしたり、複数のアルゴリズムを組み合わせても構いません。 画像サイズによってIDの桁数が変化しても構いません。 桁数は少ない方がいいですが、それよりは別画像から同一IDになる事態を避ける事の方が優先です。 宜しくお願いします。

  • 社員IDのソート

    社員IDの桁が混在しています。 社員IDでorder byすると 0001 0011 100 1200 123 1234 321 となります。これを 100 123 321 0001 0011 1200 1234 と桁数別にソートしたいと考えています。 ちなみにVARCHARです。 order by 以下うまくソートする方法が知りたいです。 お願いします。

  • jQueryでloadしたphpをapendToしたいのですが。

    jQueryのload関数を使って、日付を元にランダムな10ケタの数字を生成するプログラム(rand.php)を読み込み、そのプログラムの結果をcontentsというIDのdiv内にappendToしたいのです。 そして、5秒ごとにrand.phpを読み込み、そのたびにcontentsというIDのdiv内に結果をappendToしたいのです。 イメージとしては下記のような感じになります。 $(function(){ function loadAndAppend(){ $("div#contents").apendTo(load("rand.php")); setTimeout(loadAndAppend, 5000); }; loadAndAppend(); }); しかし、これだとうまくいきません。apendTo(load("rand.php"))という部分がおかしいのでしょうが、これをどう直せばよいか分かりません。 ぜひとも解決法を教えていただけないでしょうか。

  • エクセルで3ケタの乱数

    今度くじ引き大会をするのに3ケタの数字を250名ほどに配りたいのですが、それぞれの数字が重複なくかつ各桁数の数字が重複しないで乱数をエクセルで生成する方法を教えてください。(例えば、101,221,199などは除外したいです) RAND,RANDBETWEEN関数を使ってみましたが、重複してしまうし、221などのような各桁で数字が重複してしまうものができてしまうのでうまくいきません。 よろしくお願いします。

  • 桁数の多い乱数の生成法

    50桁から300桁といった桁数の多い乱数の生成法を探しています。 乱数生成アルゴリズム等を使用するのは、ネットで調べてわかるのですが、具体的な方法がほとんど載ってませんでした。 詳しくのっているページがあれば、教えてください。

  • <img src=".php?id=id">をカウントしないようにしたい

    PHPでクリックされた回数をカウントしているのですが <?php $id=$_GET["id"]; カウント読み込み処理 カウント加算処理 header("Location: url"); ?> もし不正に<img src="http://hoge/count.php?id=id"> とした場合、クリックした回数ではなく 表示された回数をカウントされてしまいます。 <img src="http://hoge/count.php?id=id"> とした場合はカウントしない方法はありますか? よろしくお願いいたします。

    • 締切済み
    • PHP
  • phpのidの使い方

    phpを勉強している者です。 下記サイト http://www.prideofficial.com/free/news/details.php?id=1140353255 で、写真をクリックするとポップアップウィンドウが表示され、右端の「次の写真」をクリックすることで写真を次々見ることができるのですが、phpでどのように作っているのでしょう。同じことならHTMLでも十分できると思いますが、phpを使うと簡単にできるのでしょうか。その他メリットは何かあるのでしょうか。教えてください。

    • ベストアンサー
    • PHP

専門家に質問してみよう