2015-05-08 35 views
-2

我試圖做一個簡單的名稱生成器。幫助我確定它不工作的原因。我認爲這是因爲mt_rand函數。對不起,如果問題看起來平庸或不相關,我第一次在這裏和新的編程。代碼如下:PHP中mt_rand有什麼問題?

<?php 
    echo 'Ovo je moja verzija Polumenta generatora'; 
    $prvo = 'bcdfghtnjpknmlrjdzdjs'; 
    $drugo = 'aeiou'; 
    $trece = 'bcdfghtnjpknmlrjsdzdj'; 
    $cetvrto = 'uo'; 
    $prvos = mt_rand($prvo[0],$prvo[17]); 
    $drugos = mt_rand($drugo[0],$drugo[4]); 
    $treces = mt_rand($trece[0],$trece[17]); 
    $cetvrtos = mt_rand($cetvrto[0],$cetvrto[1]); 
     echo $prvos.$drugos.$treces.$cetvrtos.' Polumenta' 

?> 
+1

什麼是不工作的隨機序列?你能解釋一下這個問題或錯誤嗎? –

+0

從哪裏獲得這些值: - $ prvo [0],$ prvo [17],$ drugo [0],$ drugo [4],$ trece [0],$ trece [17],$ cetvrto [0 ],$ cetvrto [1] –

回答

2

mt_rand將整數作爲參數並返回一個整數。您正試圖傳遞它的字符並返回字符。你應該這樣做:

<?php 
    echo 'Ovo je moja verzija Polumenta generatora'; 
    $prvo = 'bcdfghtnjpknmlrjdzdjs'; 
    $drugo = 'aeiou'; 
    $trece = 'bcdfghtnjpknmlrjsdzdj'; 
    $cetvrto = 'uo'; 
    $prvos = $prvo[mt_rand(0,strlen($prvo) - 1)]; 
    $drugos = $drugo[mt_rand(0,strlen($drugo) - 1)]; 
    $treces = $trece[mt_rand(0,strlen($trece) - 1)]; 
    $cetvrtos = $cetvrto[mt_rand(0,strlen($cetvrto) - 1)]; 
    echo $prvos.$drugos.$treces.$cetvrtos.' Polumenta' 
?> 
0

你可以用另一種方式,使用數組和rand()函數。

$chrs[0] = str_split('bcdfghtnjpknmlrjdzdjs'); // array of consonants 
$chrs[1] = str_split('aeiou'); // array of vowels 
$length = 8; // nick name length 

不是產生任何字符長度

for($i = 0; $i < $length; $i++) 
{ 
$v_or_c = rand(0,1); 
if($v_or_c) 
{ 
    $nick_name .= $chrs[$v_or_c][rand(0, sizeof($chrs[$v_or_c]))]; 
} 
else 
{ 
    $nick_name .= $chrs[$v_or_c][rand(0, sizeof($chrs[$v_or_c]))]; 
} 
} 
echo ucfirst($nick_name); // ucfirst - to upper case first letter