2016-09-23 39 views
1

請告訴我,什麼是我的錯誤在這裏:隨機名稱,而不必重複它的自我

$myarrayofnames = ["Tisha","Vesta","Josphine"]; 
$randompick = array_rand($myarrayofnames,1); 
if($myarrayofnames[$randompick] === "Tisha") { 
    $myarrayofnames = ["Vesta","Josphine"]; 
    return $myarrayofnames[$randompick]; 
} 
elseif($myarrayofnames[$randompick] === "Vesta") { 
    $myarrayofnames = ["Tisha","Josphine"]; 
    return $mymyarrayofnames[$randompick]; 
} 
elseif($myarrayofnames[$randompick] === "Josphine") { 
    $myarrayofnames = ["Tisha","Vesta"]; 
    return $mymyarrayofnames[$randompick]; 
} 

我想要做的就是選擇一個隨機的名字,並確保下一個隨機名稱中不會有與現在一樣。

+0

'shuffle'數組,然後只是'一個array_shift'元素關閉它一個 – iainn

+0

你返回'$ mymyarrayofnames [$ randompick];'不應該是'$ myarrayofnames [$ randompick];'?這可能是一個簡單的修復。 – Roy123

+0

你的意思是返回$ myarrayofnames [$ randompick];對? –

回答

0

我asume,你有這個代碼在一些功能左右。當你退出該函數並再次調用另一個名字時,你從之前開始使用相同的數組,因爲沒有'保存'修改後的數組;

,因爲它在評論中有人建議,你可以使用洗牌和移位:

class gimmeName{ 

public $array = array('Tisha', 'Vesta', 'Josephine'); 

public function giveMeUniqueName(){ 
    shuffle($this->array); 
    return array_shift($this->array); 
} 
} 

演示在這裏工作:demo

+0

非常感謝!但是請告訴我,如果我正確地理解了這一點:有可能同一個名字偶爾會出現兩次,對吧?由於shuffle ...或者我不明白它是正確的 – winadalwinn

+0

嗨,沒有這個機會,因爲array_shift刪除數組的第一個元素並返回它。此返回的元素不再存在於數組中 – Jimmmy