按首字母重组数组排序,PHP大转盘中奖可能率算法与示范代码

//压入首字母
        foreach ($res as $k => $v)
        {
            $res[$k][‘first’] =
strtoupper(substr(trim($v[‘name’]), 0, 1));
            $arr = array(‘A’, ‘B’, ‘C’, ‘D’, ‘E’, ‘F’, ‘G’, ‘H’, ‘I’,
‘J’, ‘K’, ‘L’, ‘M’, ‘N’, ‘O’, ‘P’, ‘Q’, ‘R’, ‘S’, ‘T’, ‘U’, ‘V’, ‘W’,
‘X’, ‘Y’, ‘Z’);
            //假若不是字母 把他筹划到0-9系列
            if (!in_array($res[$k][‘first’], $arr))
            {
                $res[按首字母重组数组排序,PHP大转盘中奖可能率算法与示范代码。$k][‘first’] = ‘0-9’;
            }
        }

//压入首字母
        foreach ($res as $k => $v)
亚洲必赢官网 ,        {
            $res[$k][‘first’] =
strtoupper(substr(trim($v[‘name’]), 0, 1));
            $arr = array(‘A’, ‘B’, ‘C’, ‘D’, ‘E’, ‘F’, ‘G’, ‘H’, ‘I’,
‘J’, ‘K’, ‘L’, ‘M’, ‘N’, ‘O’, ‘P’, ‘Q’, ‘R’, ‘S’, ‘T’, ‘U’, ‘V’, ‘W’,
‘X’, ‘Y’, ‘Z’);
            //假如不是字母 把他安插到0-9行列
            if (!in_array($res[$k][‘first’], $arr))
            {
                $res[$k][‘first’] = ‘0-9’;
            }
        }

近些年工作中有一项目,APP客户端有大转盘抽奖,具体怎么样抽奖当然在我们服务端实现洛。上面和豪门简单分享一下达成代码:

废话不多说,直接上代码

        foreach ($res as $k => $v)
        {
            $result[$v[‘first’]][] = $v;
        }
        

        foreach ($res as $k => $v)
        {
            $result[$v[‘first’]][] = $v;
        }
        

 代码如下

复制代码 代码如下:

        ksort($result);

        ksort($result);

header(“Content-type: text/html; charset=utf-8”);
$prize_arr = array(
‘0’ =>
array(‘id’=>1,’prize’=>’机械电脑’,’v’=>1),
‘1’ =>
array(‘id’=>2,’prize’=>’卡片机’,’v’=>5),
‘2’ => array(‘id’=>3,’prize’=>’音箱设备’,’v’=>10),
‘3’ => array(‘id’=>4,’prize’=>’4G优盘’,’v’=>12),
‘4’ => array(‘id’=>5,’prize’=>’10Q币’,’v’=>22),
‘5’ => array(‘id’=>6,’prize’=>’下次难说就能中哦’,’v’=>50),
);
 
$actor = 100;
 
foreach ($prize_arr as $v)
{
$arr[$v[‘id’]] = $v[‘v’];
}
foreach ($arr as &$v) {
$v = $v*$actor;
}
asort($arr);
$sum = array_sum($arr);   //总概率
 
$rand = mt_rand(1,$sum);
 
$result = ”;    //中奖产品id
 
foreach ($arr as $k => $x)
{
if($rand <= $x)
{
$result = $k;
break;
}
else
{
$rand -= $x;
}
}
$res[‘yes’] = $prize_arr[$result-1][‘prize’]; //中奖项
print_r($res);

/**
         * 给数组排重
         *
与array_unique函数的分别:它供给val是字符串,而以此能够是数组/对象
         *
         * @param unknown_type $arr 要排重的数组
         * @param unknown_type $reserveKey 是或不是保留原来的Key
         * @return unknown
         */
        static function m_ArrayUnique($arr, $reserveKey = false)
        {
            if (is_array($arr) && !empty($arr))
            {
                foreach ($arr as $key => $value)
                {
                    $tmpArr[$key] = serialize($value) . ”;
                }
                $tmpArr = array_unique($tmpArr);
                $arr = array();
                foreach ($tmpArr as $key => $value)
                {
                    if ($reserveKey)
                    {
                        $arr[$key] = unserialize($value);
                    }
                    else
                    {
                        $arr[] = unserialize($value);
                    }
                }
            }
            return $arr;
        }

代码非常粗大略,却百般的实用,有须要的伴儿能够向来拿去用的。

另附上其余网上好友的消除办法

复制代码 代码如下:

<?php
$input = array(“a” => “green”,””, “red”,”b” => “green”, “”,”blue”,
“red”,”c” => “witer”,”hello”,”witer”);
//$result = array_unique($input); //去除重复成分
$result = a_array_unique($input);   //只留下单一成分
foreach($result as $aa)
{
echo $aa.”<br />”;
}
function multi_unique($array) {
   foreach ($array as $k=>$na)
       $new[$k] = serialize($na);
   $uniq = array_unique($new);
   foreach($uniq as $k=>$ser)
       $new1[$k] = unserialize($ser);
   return ($new1);
}

function a_array_unique($array)//写的可比好
{
   $out = array();
   foreach ($array as $key=>$value) {
       if (!in_array($value, $out))
{
           $out[$key] = $value;
       }
   }
   return $out;
}
?>

PHP数组去除重复项 有个放置函数array_unique (),但是php的
array_unique函数只适用于一维数组,对多维数组并不适用,以下提供三个二维数组
的 array_unique函数

复制代码 代码如下:

function unique_arr($array2D,$stkeep=false,$ndformat=true)
{
    // 判断是还是不是保留一级数组键 (一流数组键能够为非数字)
    if($stkeep) $stArr = array_keys($array2D);
    // 判断是不是保留二级数组键 (全数二级数组键必须一致)
    if($ndformat) $ndArr = array_keys(end($array2D));
    //降维,也能够用implode,将一维数组转换为用逗号连接的字符串
    foreach ($array2D as $v){
        $v = join(“,”,$v);
        $temp[] = $v;
    }
    //去掉重复的字符串,也正是双重的一维数组
    $temp = array_unique($temp);
    //再将拆开的数组重新组建
    foreach ($temp as $k => $v)
    {
        if($stkeep) $k = $stArr[$k];
        if($ndformat)
        {
            $tempArr = explode(“,”,$v);
            foreach($tempArr as $ndkey => $ndval)
$output[$k][$ndArr[$ndkey]] = $ndval;
        }
        else $output[$k] = explode(“,”,$v);
    }
    return $output;
}

演示:

$array2D =
array(‘first’=>array(‘title’=>’1111′,’date’=>’2222’),’second’=>array(‘title’=>’1111′,’date’=>’2222’),’third’=>array(‘title’=>’2222′,’date’=>’3333’)); 
print_r($array2D); 
print_r(unique_arr($array2D,true));

你可能感兴趣的小说:

  • php从数组中专断行选购取若干不另行元素的艺术
  • PHP查找数值数组中不重复最大和微小的11个数的法子
  • php数组函数连串之array_unique() –
    去除数组中再一次的成分值
  • php array_flip()
    删除数组重复成分
  • PHP
    n个不另行的妄动数生成代码
  • php二维数组合并及去重新的方法
  • PHP三种去掉数组重复值的办法相比
  • PHP去除数组中再一次的要素并按键名排序函数
  • php去除重复字的贯彻代码
  • PHP获取字符流中第3个不另行字符的方式
网站地图xml地图