function getRank($arr, $len=0, $str="") {
global $arr_getrank;
$arr_len = count($arr);
if($len == 0){
$arr_getrank[] = $str;
}else{
for($i=0; $i<$arr_len; $i++){
$tmp = array_shift($arr);
if (empty($str))
{
getRank($arr, $len-1, $tmp);
}
else
{
getRank($arr, $len-1, $str.",".$tmp);
}
// array_push($arr, $tmp);
}
}
}
测试:
$words = array('a1','b2','c3','d4','e5');
$arr_getrank = array();
getRank($words, 3);
print_r($arr_getrank);
输出:
Array
(
[0] => a1,b2,c3
[1] => a1,b2,d4
[2] => a1,b2,e5
[3] => a1,c3,d4
[4] => a1,c3,e5
[5] => a1,d4,e5
[6] => b2,c3,d4
[7] => b2,c3,e5
[8] => b2,d4,e5
[9] => c3,d4,e5
)
Ⅱ php视频教程谁讲的比较好,从入门基础开始讲的,请大家推荐一下。
建议看李恢炎的php十天入门网页链接 希望对你有所帮助
Ⅲ 用PHP程序想要用多个字符串组成最大数量的不同组合,如何操作
<?php
header('Content-type:text/html;charset=utf-8');
$str = array('a001','b001','a002','a003','c001','c002','c003','d001','d002','d003');
$len = 3;
$col = 1;
$count = count($str)-$len+1;
for($i=1;$i<$count;$i++)
{
for($j=1;$j<$count+1;$j++)
{
echo $str[$i-1]. ',' . $str[$j] . ',' . $str[$j+1] .'<br/>';
}
}
?>
Ⅳ php 如何做排列组合
原理相当于自己建个树,不停地在末尾里添加上子节点,最后遍历整个树。
代码如下:
<?php
$str='1=12,2=34,3=14,4=23';
$_str=explode(',',$str);
$_str=array_reverse($_str);
$_key=array();
$tree=array();
foreach($_str as $v){
$str=explode('=',$v);
$_key[]=$str[0];
$str=str_split($str[1]);
$_tree=array();
foreach($str as $node){
if(empty($tree)):
$_tree[][]=$node;
else:
foreach($tree as $_node) $_tree[]=str_split(implode($_node).$node);
endif;
}
$tree=$_tree;
}
foreach($tree as $v){
$str=array();
foreach($v as $_k=>$_v) $str[]=$_key[$_k].'='.$_v;
echo implode(',',array_reverse($str)),'<br>';
}
?>
Ⅳ 怎么用PHP代码做出数字1到10的所有组合方式
你的思路是 先随机得到一个1-100的i
然后截取判断,再在判断里循环?
先改思路,在不考虑效率的情况下,先循环
$arr=Array();
while(count($arr)<10){
$temp=rand(1,100);
//判断末尾数字
//判断是否数组中存在,不存在就$arr[]=$temp;存在就continue;
}
如果考虑效率,则修改算法,1-100就是两位数,随机生成十位数,末位再随机生成3和8比较好
Ⅵ php,1个字符串组合,将组合中的每两个字符串连在一起组成新的字符,并全部列出。
$array = array($a,$b,$c,$d,…);//原有的字符串变成数组
foreach($array as $k1=>$v1)
{
foreach($array as $k2=>$v2)
{
if($k1==$k2)continue;//如果同一个字符串也可以组合,就删除这句
$out[] = $v1.$v2;
}
}
//$out数组中就是所有组合连接的结果,
foreach($out as $k=>$v)
{
echo $v;
echo ',';//逗号是要字符串间的分隔符,可改为你自己需要的
}
//也可以用以下方法输出
$str = implode(",", $out);//逗号是要字符串间的分隔符,可改为你自己需要的
echo $str;
Ⅶ 求一段PHP代码。几个条件判断组合
$cond='';
if($a)$cond.="anda='a'";
if($b)$cond.="andb='b'";
if($c)$cond.="andc='c'";
if($d)$cond.="andd='d'";
if($cond)$cond='where'.substr($cond,4);
$sql='Select*fromDataBase'.$cond;
echo$sql;
Ⅷ 求php标签专题的组合开发思路
先有个大的分类,比如材质,颜色,工艺,样式,用途。
材质里包含二级分类,比如石材,金属,树脂。然后下面再有三级分类。石材包含大理石,花岗岩等等
样式里包含动物,抽象,植物,人像等等,
你举的例子里铜是材质,铸是工艺,大象是样式-动物中的分类,也可以不分这么细。
标签的内容最好在3-5个字,每篇不超过5个标签,这样有利于后期优化。
另外,标签的作用还是方便用户,其实和分类差不多,你可以给文章分类再加上标签去细分。
你可以在数据库中建个标签表,提前准备好,让用户去选择,比如级联菜单,或者固定格式让用户填写。
如果从用户写的标题中去读取比较困难,因为你和用户需求不同,你是想清晰分类让别的用户方便,用户的需求是展示商品越有噱头越好。
我要是用户标题我就写:宫里流传出来价值百万的稀罕老物件求鉴定!
你怎么读取标签?
Ⅸ php实现全组合算法
<?php
/**
* 在数组$a中任意m个元素组合
*
* @param array $a 候选的集合
* @param int $n 候选的集合大小
* @param int $m 组合元素大小
* @param array $b 储存当前组合中的元素,这里储存的是元素键值
* @param int $M 相当一个常量,一直保持不变
* @return */
function combine($a,$n,$m,$b,$M){
for($i=$n;$i>=$m;$i--){
$b[$m-1]=$i-1;
if($m > 1){
$combine[]=combine($a,$i-1,$m-1,$b,$M);
}else{
$onecombine='';
for($j=$M-1;$j>=0;$j--){
$onecombine.=$a[$b[$j]];
}
$combine[]=$onecombine;
$onecombine='';
}
}
return $combine;
}
/**
* 递归输出数组
*
* @param array $arr 待输出的数组
* @return int 返回数组元素个数*/
function recursionarray($arr){
$i=0;
foreach($arr as $value){
if(is_array($value)){
$i+=recursionarray($value);
}else{
echo $value."<br/>";
$i++;
}
}
return $i;
}
$a=array('A','B','C','D','E','F','G','H','I','J');
$b=array();
$combine=combine($a,10,5,$b,5);
$count=recursionarray($combine);
echo "总共有".$count."组合";
?>
Ⅹ 求php全套教程
PHP视频教程 兄弟连PHP全套视频教程-高洛峰 细说PHP-高洛峰