1.输出乘法表
/**
* 输出乘法表
*/
public function multiplyTbale(){
for ($i=9;$i<=9;$i++){ //循环行数
for ($j=1;$j<=9;$j++){ //循环乘数第一位数
for ($k=9;$k>=$j;$k--){ //循环乘数第二位数
echo $j."*".$k."=".$j*$k;
echo " ";
}
echo "<br>";
}
}
}
2.根据数组,得出三角形组
/**
* 根据数组,得出三角形组
* 给定一个整数数组,在该数组中,寻找三个数,分别代表三角形三条边的长度,问,可以寻找到多少组这样的三个数来组成三角形?
*/
public function actionSan($arr=[4,4,4,4]){
$i = 0;
foreach ($arr as $key =>$value){
unset($arr[$key]); //删除第一条边
$arr1 = $arr;
foreach ($arr1 as $key1 =>$value1){
unset($arr1[$key1]); //删除第二条边
$arr2 = $arr1;
foreach ($arr2 as $key2 =>$value2){
if(($value+$value1)>$value2 || ($value==$value1&&$value==$value2)){ //两边之后大于第三边 或者 三边都相等
$i++;
echo "(".$value.",".$value1.",".$value2.")";echo "<br>";
}
}
}
}
}
3.倒序输出指定日期前几个月日期
public function Months(){
$date = "2020-10-01";
$i = 1;
while($i <= 8){
echo date("Y-m-d ",strtotime("-$i months",strtotime($date)));echo "<br>";
$i++;
}
}
4.使用php实现,给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。
/**
* 使用php实现,给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。
*/
public function actionRevint($int = 123450){
$res = 0;
while($int != 0)
{
$temp = $int % 10; //获取余数
$int = intval($int) / 10; //目标数除以10
$res = $res * 10 + $temp; //目标数乘以10加余数,形成翻转
}
if($res > PHP_INT_MAX || $res < PHP_INT_MIN) { //判断翻转后的整数是否大于最大整数或小于最小整数,溢出
return 0;
}else{
return $res;
}
}
5.斐波那契数列求和算法
/**
* 非递归写法
* 斐波那契数列求和 [0,1,1,2,3,5,8,13,21,34]
* 数组规律:后一位是前两位数之和
* 数组个数: int $n
*/
function fbnq($n=5){
if($n <= 0){
return 0;
}
$arr[0] = 0;
$arr[1] = 1; //设置斐波那契数列的第一值和第二个值
for($i=2; $i<=$n; $i++){
$arr[$i] = $arr[$i-1] + $arr[$i-2];
}
return $arr;
}
/**
* 递归写法
* 斐波那契数列求和 [0,1,1,2,3,5,8,13,21,34]
* 数组规律:后一位是前两位数之和
* 数组个数: int $n
*/
function fbnq2($n=8){
if($n==1 || $n==2 ){
return 1;
}else{
return $this->fbnq2($n-1) + $this->fbnq2($n-2);
}
}
6.交错合并两个数组
/**
* 交错合并两个数组
* 返回
*/
function cross_merge_array($arr1 = array('a', 'b', 'c'), $arr2=array('1', '2', '3'))
{
$arr1 = array_values($arr1);
$arr2 = array_values($arr2);
$count = max(count($arr1), count($arr2)); //获取两数组中最大的数组长度
$arr = array();
for ($i = 0; $i < $count; $i++) {
if ($i < count($arr1)) $arr[] = $arr1[$i]; // 判断,避免 $arr1 下标越界
if ($i < count($arr2)) $arr[] = $arr2[$i]; // 判断,避免 $arr2 下标越界
}
return $arr; //返回 array('a', '1', 'b', '2', 'c', '3');
}