• 技术文章 >php教程 >php手册

    把$input_arr进行组合操作,并返回一个包含所有组合的数组

    2016-06-21 09:07:04原创535

    数组

    /**
    *描述:把$input_arr进行组合操作,并返回一个包含所有组合的数组
    *参数:$input_arr 操作对象,$delimit 组合的分割符号,$n 每个组合的数组单元数
    *作者:surfchen@gmail.com
    *版权:任意复制,修改所有内容.
    **/
    function getSingleComb($input_arr,$delimit,$n)
    {
    if ($n==1)
    {
    return $input_arr;
    }
    $c_num=getCNum($n,count($input_arr));
    $new_arr=array();
    while (1)
    {
    $r_arr=array_rand($input_arr,$n);
    asort($r_arr);
    foreach ($r_arr as $value)
    {
    $tmp_str[]=$input_arr[$value];
    }
    $new_str=implode($delimit,$tmp_str);
    unset($tmp_str);
    if (!in_array($new_str,$new_arr))
    {
    $new_arr[]=$new_str;
    }
    if (count($new_arr)>=$c_num)
    {
    break;
    }
    }
    return $new_arr;

    }
    /**
    *描述:获得组合(请参阅初等数学的排列与组合)个数
    *参数:$m 组合的单元数,$n 单元总数
    *作者:surfchen@gmail.com
    *版权:任意复制,修改所有内容.
    **/
    function getCNum($m,$n)
    {
    $store_m=$m;
    $store_n=$n;
    $dividend=1;
    for ($m;$m>1;$m--)
    {
    $dividend*=$m;
    }
    $divisor=1;
    for ($n;$n>=($store_n-$store_m+1);$n--)
    {
    $divisor*=$n;
    }
    return $divisor/$dividend;
    }
    /**
    *描述:把$input_arr进行组合操作,并返回一个包含所有组合的数组
    *参数:$input_arr 操作对象,$delimit 组合的分割符号,$n_arr 为一个数组,其值范围必须在从1到count($input_arr)之间
    *作者:surfchen@gmail.com
    *版权:任意复制,修改所有内容.
    **/
    function getMultiComb($input_arr,$delimit,$n_arr)
    {
    $return_arr=array();
    foreach ($n_arr as $value)
    {
    $return_arr=array_merge($return_arr,getSingleComb($input_arr,$delimit,$value));
    }
    return $return_arr;
    }
    $input_arr=explode(" ",'sina sohu yahoo baidu 163');
    print_r(getMultiComb($input_arr," ",array(1,2,3,4)));
    ?>



    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:nbsp arr input return delimit
    上一篇:php实现全局静态变量类的一种实现方式 下一篇:给图片添加水印(支持中文)并生成缩略图
    VIP课程(WEB全栈开发)

    相关文章推荐

    • 【腾讯云】年中优惠,「专享618元」优惠券!• php简单缩略图类|image.class.php• 用ADODB来让PHP操作ACCESS数据库的方法• 我的论坛源代码(八)• 在Windows系统下安装PHP5.0配置简明教程• Win2000+Apache+MySql+PHP4+PERL安装使用小结_php基础
    1/1

    PHP中文网