ちょっとした抽選をしたい時。
1等が3%の確率、2等が5%の確率、3等が10%の確率、4等が82%の確率で出す場合。
valueが確率となるので合計100が理想ですが、100じゃなくても動きます。
	$entries = array(
	    "1"    => 3,
	    "2"    => 5,
	    "3"    => 10,
	    "4"  => 82,
	);
	$result_key = $this->array_lottery($entries);
	$data = [];
	switch($result_key){
		case 1:
			$data['rank'] = "1等賞"; 
			$data['prize'] = "現金200,000円"; 
			break;
		case 2:
			$data['rank'] = "2等賞"; 
			$data['prize'] = "現金50,000円"; 
			break;
		case 3:
			$data['rank'] = "3等賞"; 
			$data['prize'] = "現金3,000円"; 
			break;
		case 4:
			$data['rank'] = "4等賞"; 
			$data['prize'] = "あめ玉"; 
			break;
	}
	
	echo "あなたは" . data['rank'] . "です。" . $data['prize'] . "ゲットです!";
	public function array_lottery($entries){
	    $sum  = array_sum($entries);
	    $rand = rand(1, $sum);
	    foreach($entries as $key => $weight){
	        if (($sum -= $weight) < $rand){
				return $key;
			}
	    }
	}
賞品の個数が決まってない場合の簡単な方法です。
個数が決まっている場合はもう少し複雑なロジックが必要。