遞歸算法學習
阿新 • • 發佈:2019-03-19
chang war count 學習 self function 遞歸算法 滿足 應用場景
題目:寫一個函數, 滿足如下條件:
$arr = [ "Name" => ‘test‘, "Data" => [ "Uid" => 1, "Name" => "eva", "Thread" => [ "ID1" => 22, "ID2" => 33, ], ], "Title" => "get a string", ];
數組樣例如上,
(1)所有key小寫
(2)根據key 升序排列
(3)多維數組 $arr[‘abc‘][‘efg‘] = 1變成 abc.efg = 1
應用場景是什麽?
解答:
<?php $arr = [ "Name" => ‘test‘, "Data" => [ "Uid" => 1, "Name" => "eva", "Thread" => [ "ID1" => 22, "ID2" => 33, ], ], "Title" => "get a string", ]; $testobj = new test(); $testobj->lower($arr); $prefix = ""; $newArr = []; $testobj->getPrefix($arr,$prefix,$newArr); ksort($newArr); $finalStr = ""; foreach ($newArr as $key=>$value){ $finalStr .= $key."=".$value."&"; }var_dump(rtrim($finalStr,"&")); class test{ function getPrefix($arr,&$prefix,&$newArr){ foreach ($arr as $key=>$value){ if(is_array($value)){ $prefix .=$key."."; self::getPrefix($value,$prefix,$newArr); $prefix = ""; }else{ $newArr[$prefix.$key]=$value; } } } function lower(&$arr){ $arr = array_change_key_case($arr); foreach ($arr as $key=>&$value){ if(is_array($value)){ self::lower($value); } } } } ?>
題目:用戶充值優惠計算方法:
解答:
<?php var_dump(discountAmount(800)); //$amount 為原價 function discountAmount($amount){
//價格 => 折扣 $arr = [ 10 =>1000, 100=> 999, 200=>998, 300=>997, 400=>996, 500=>995, 600=>994, 700=> 993, 800=> 992, 900=>991, 1000=> 990, 10000=> 989, 50000=>988, 500000=> 987, ]; krsort($arr); foreach ($arr as $min=>$discount){ if($amount>=$min){ return $dicountAmount = $amount * $discount /1000; } } } ?>
遞歸算法學習