0 レビュー
1 回答
php-乱数列を使用してランダム番号を生成する
PHPヘルプ
私はこのようなさまざまな一連のコードを持っています:
BT4YX***1
Eg:BT4DA1111
BT4YX**X1
Eg:BT4DA11A1
BT4Y**X*1
Eg:Bt4D22A21
コードの値を:
でシャッフルしたい X=A,B,C,D,E
*=0 to 9
つまり、最終的にランダムなシリーズが取得され、シャッフル値がその選択されたシリーズに入力され、最終的にこのようなコードが得られます
BT4DA11A1
これまでのところ、私は次のようなことをしました:
$series = array("BT4YXXXX1", "BT4Y**X*1", "BT4Y**X*1", "BT4YX**X1", "BT4YX***1");
$random_series = $series[ rand(0,(count($series)-1)) ];
echo $random_series;
乱数列を取得することはできますが、Xと*のランダムな値を入力することに固執しています
助けてください
わからない
0
レビュー
答え :
解決策:
$series = array(
'BT4YX***1',
'BT4YX**X1',
'BT4Y**X*1',
'BT4YXXXX1',
);
$result = preg_replace_callback(
'/[X*]/',
function ($matches) {
switch($matches[0]) {
case '*' : return range(0,9)[array_rand(range(0,9))];
case 'X' : return range('A','E')[array_rand(range('A','E'))];
}
},
$series
);
var_dump($result);
編集
PHPが必要>=5.4.0;ただし、配列の間接参照をリファクタリングした場合は、5.3.0以降で使用できます。例:
$series = array(
'BT4YX***1',
'BT4YX**X1',
'BT4Y**X*1',
'BT4YXXXX1',
);
$result = preg_replace_callback(
'/[X*]/',
function ($matches) {
switch($matches[0]) {
case '*' :
$range = range(0,9);
$rand = array_rand($range);
return $range[$rand];
case 'X' :
$range = range('A','E');
$rand = array_rand($range);
return $range[$rand];
}
},
$series
);
var_dump($result);
わからない
同様の質問
私たちのウェブサイトで同様の質問で答えを見つけてください。