$charの中の文字からランダムに数字を4つ選ぶPHPプログラムを組んだのですが

<?php
$char = 'abcdefghijklmnopqrstuvwxyz0123456789!#$%&()=~{`}+_';
$list = preg_split( '//', $char, -1, PREG_SPLIT_NO_EMPTY );
$rand = array_rand($list, 4);
print_r($rand);
?>
とするとArray ( [0] => 20 [1] => 22 [2] => 29 [3] => 31 ) が出てきます。
どうすればいいのでしょうか?

回答の条件
  • 1人3回まで
  • 登録:2009/05/11 19:36:06
  • 終了:2009/05/11 21:33:59

ベストアンサー

id:tdoi No.1

tdoi回答回数174ベストアンサー獲得回数752009/05/11 20:20:40

ポイント35pt

array_randのドキュメントを読んでもらうと分かりますが、array_randはランダムに抽出したキーを取得します。

参考:http://php.benscom.com/manual/ja/function.array-rand.php

array_randを使いたいのであれば、こんな感じでしょうか?

$char = 'abcdefghijklmnopqrstuvwxyz0123456789!#$%&()=~{`}+_';
$list = array_values(preg_split( '//', $char, -1, PREG_SPLIT_NO_EMPTY ));
$keys = array_rand($list, 4);
$rand = array();
foreach ($keys as $key) {
  $rand[] = $list[$key];
}
print_r ($rand);

要素数が少なく、$listを破壊してもよければ、次のような方法もありかもです。

$char = 'abcdefghijklmnopqrstuvwxyz0123456789!#$%&()=~{`}+_';
$list = array_values(preg_split( '//', $char, -1, PREG_SPLIT_NO_EMPTY ));
shuffle($list);
$rand = array_chunk($list, 4);
$rand = $rand[0];
print_r ($rand);

何かの参考になれば。

id:takanii

array_randはランダムに抽出したキーを取得します

なるほど どうりでか!

2009/05/11 21:21:42

その他の回答(1件)

id:tdoi No.1

tdoi回答回数174ベストアンサー獲得回数752009/05/11 20:20:40ここでベストアンサー

ポイント35pt

array_randのドキュメントを読んでもらうと分かりますが、array_randはランダムに抽出したキーを取得します。

参考:http://php.benscom.com/manual/ja/function.array-rand.php

array_randを使いたいのであれば、こんな感じでしょうか?

$char = 'abcdefghijklmnopqrstuvwxyz0123456789!#$%&()=~{`}+_';
$list = array_values(preg_split( '//', $char, -1, PREG_SPLIT_NO_EMPTY ));
$keys = array_rand($list, 4);
$rand = array();
foreach ($keys as $key) {
  $rand[] = $list[$key];
}
print_r ($rand);

要素数が少なく、$listを破壊してもよければ、次のような方法もありかもです。

$char = 'abcdefghijklmnopqrstuvwxyz0123456789!#$%&()=~{`}+_';
$list = array_values(preg_split( '//', $char, -1, PREG_SPLIT_NO_EMPTY ));
shuffle($list);
$rand = array_chunk($list, 4);
$rand = $rand[0];
print_r ($rand);

何かの参考になれば。

id:takanii

array_randはランダムに抽出したキーを取得します

なるほど どうりでか!

2009/05/11 21:21:42
id:GoldenDawn No.2

GoldenDawn回答回数426ベストアンサー獲得回数812009/05/11 20:21:37

ポイント35pt

$charの中の文字からランダムに数字を4つ選ぶ

「数字を」→「文字を」と解釈します。

array_rand は配列のキーを返すので、例えば

<?php
$char = 'abcdefghijklmnopqrstuvwxyz0123456789!#$%&()=~{`}+_' ;
$list = preg_split( '//', $char, -1, PREG_SPLIT_NO_EMPTY ) ;
$rand = array_rand($list, 4) ;
for ($i = 0, $result = array(); $i < count($rand); ++$i) $result[] = $list[$rand[$i]] ;
print_r($result) ;
?>

とか、

<?php
$char = 'abcdefghijklmnopqrstuvwxyz0123456789!#$%&()=~{`}+_' ;
$list = str_split(str_shuffle($char)) ;
$rand = array_slice($list, 0, 4) ;
print_r($rand) ;
?>

とか。

id:takanii

ありがとうございました

2009/05/11 21:23:34

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません