Written with StackEdit.
今天寫了一整個下午的遞歸練習題
關鍵在於
- 不要把變數 $tmp 設成靜態變數
- 要使用多維數組的想法來解
- 最好把數組的原型畫出來會比較容易理解
- 運用is_int, is_array, is_string 函數來做判斷
- 使用 array_push()函數來放array元素
- 使用foreach(key =>$value)來拆數組
54.遞歸練習題一
1. 把array(1,2,’a’,array(3,’b’,array(5,6)))里的数字改为2倍输出,其他不变
<?php
$arr=array(1,2,'a',array(3,'b',array(5,6)));
function arrayx2($fnarr){
$tmp=array();//不需要靜態,因為每一維數組都是從新的開始
foreach($fnarr as $i=>$v){
if(is_string($v)){
array_push($tmp,$v);
}else if(is_array($v)){
$tmp[$i]=arrayx2($v);
}else{
$v*=2;
array_push($tmp,$v);
}
}
return $tmp;
}
print_r(arrayx2($arr));
// $arr=array(
// [0]=>1
// [1]=>2
// [2]=>'a'
// [3]=>array
// (
// [0]=>3
// [1]=>'b'
// [2]=>array
// (
// [0]=>5
// [1]=>6
// )
// )
// )
?>
沒有留言:
張貼留言