首页 > 代码库 > PHP第四天作业:可变变量的首次应用

PHP第四天作业:可变变量的首次应用

今天作业第五题:

5、由数字1、2、3、4能组成多少个不重复的 3位数字,要求一个数中不能有重复出现的数字。

这道题一上手的第一时间就是用for循环遍历所有可能性,并且找出符合条件的元素。

那么代码就不详解了,基本都会:

for($s1=1;$s1<5;$s1++){
  for($s2=1;$s2<5;$s2++){
    for($s3=1;$s3<5;$s3++){
      if($s1!=$s2&&$s1!=$s3&&$s2!=$s3){
        echo $s1,$s2,$s3,"<br />";
      }
    }
  }
}

第五题就做出来了,那么如果题目要求的数字并不是1、2、3、4这种有规律的数字呢?

例如:2、4、7、9  ?这又如何实现?

方法有两个,一个是把这新的四个数字都保存到一个数组里面,然后每次输出,都去找这个数组的下标即可,不过还没学到数组,我也不太会应用所以就放弃了这个念头。

要在学过的知识里找到方法,于是我想到了 可变变量 ,这就是方法二。

理由如下:数字的量是固定的,而且排序也没有硬性要求,而且只需要引用出来就好并不需要进行过多的处理……这些条件凑到一起,难免让我想到可变变量上去。

首先定义四个变量,名字相同,后缀为1、2、3、4的变量存放这四个新的数据:2、4、7、9;

然后后面遍历的时候只需要提取出分别的变量名,然后输出这个变量即可。

所以只需要对源代码进行一点点修饰,就可以轻松达成:

强化版5、由数字2、4、7、9能组成多少个不重复的 3位数字,要求一个数中不能有重复出现的数字。

代码如下:

$a1=2;
$a2=4;
$a3=7;
$a4=9;
for($s1=1;$s1<5;$s1++){
  for($s2=1;$s2<5;$s2++){
    for($s3=1;$s3<5;$s3++){
      if($s1!=$s2&&$s1!=$s3&&$s2!=$s3){
        $b="a".$s1;
        $c="a".$s2;
        $d="a".$s3;
        echo $$b,$$c,$$d,"<br />";
      }
    }
  }
}

这样就能实现任意四个数,凑成任意三位数,并且个位数上数字不同的效果了。

对这道题继续拓展到任意数量的数字时,也只是定义时追加定义,或者当数据过大时使用循环语句进行定义,重复上述代码即可。

而拓展到任意位数时,就是增加代码里面的for循环次数以及判断次数而已。

PHP第四天作业:可变变量的首次应用