PHP 递归简单了解

时间:2022-10-02 05:27:21

初学php的时候,刚刚认识递归。然后对他进行了小小的总结。适用于小小白

<?php

//1.一个多维数组,单元为数字的变成两倍
//如:array(1, 2, 'b', array(3, 'c', array(4, 5))); 中数字变成两倍
function arr($arr){
foreach ($arr as $key => $value) {
if (is_integer($value)) { //is_integer() 也就是 is_int()
$arr[$key] *= 2;
// $arr[$key] = $arr[$key] << 1;
// $value << 1; //使用$value 是错误的,变量值不变
}
if (is_array($value)) {
$arr[$key] = arr($value); //递归函数就自身调用自身,如果发现二位数组中还有数组,那么继续调用自身,把二维数组解析完之后,在继续解析上一级的数组
}
}
return $arr;
}
$array = array(1, 2, 'a', array(3, 'b',array(4, 5 ,'c', 'd', array('e', 6))));
print_r(arr($array));


//2.创建连级目录
//如,给定'./a/b/c/d/e',但是./a不存在,进行递归创建


function t($path){
if (file_exists($path)) {
echo 'exists';
return;
}


if (!file_exists($path)) {
t(dirname($path));
mkdir(dirname($path));
}
mkdir($path);
}
$path = './a/b/c/d/e/f';
t($path);


//3.删除一个目录下的所有文件 //明天重做
//比如删除./a目录下的所有文件


function m($path){
$dh = opendir($path);
while (($row = readdir($dh)) !== false) {
if (!is_dir($path.'/'.$row)) {
unlink($path.'/'.$row);
}
else{
if ($row == '.' || $row == '..') {
continue;
}

m($path.'/'.$row);
}
}
closedir($dh);
rmdir($path.'/'.$row);
}
$path = './a';
m($path);