人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

$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 ) が出てきます。
どうすればいいのでしょうか?

●質問者: takanii
●カテゴリ:インターネット ウェブ制作
✍キーワード:Char PHP Rand プログラム ランダム
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● tdoi
●35ポイント ベストアンサー

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);

何かの参考になれば。

◎質問者からの返答

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

なるほど どうりでか!


2 ● GoldenDawn
●35ポイント

$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) ;
?>

とか。

◎質問者からの返答

ありがとうございました

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ