第一次在stackoverflow上提問,亮瞎了。。

下午看oc代碼,看到這麼一句


array_multisort($sort_order, SORT_ASC, $method_data);

這個是對多個數組進行排序的,倒是沒什麼好說。然後我自己給自己出了道題,是這樣的。

$arr = array(10, 102, 199, "a"=>array('B','c','d'=>array('e','f')),'g','h'); 

要求把這個數組的小寫全部變成大寫 ABCDEFGH,說實話,糾結了有2個多小時。

想遞歸,想判斷數組深度。

然後半成品是這麼個結果:

function array_depth($array) {
        $max_depth = 1;

        foreach ($array as $value) {
            if (is_array($value)) {
                $depth = array_depth($value) + 1;

                if ($depth > $max_depth) {
                    $max_depth = $depth;
                }
            }
        }        
        return $max_depth;
 }
array_depth($ar);

function toto($arr,$depth='1'){
	$tem=array();
	foreach ($arr as $key => $value) {
		if(is_string($value)){
			$tem[]=strtoupper($value);
		}elseif(is_array($value)&&array_depth($value)>1){
			 // $J=str_repeat('[]', (array_depth($value)));
		   $tem[]=array_map('strtoupper',$value);
		}else{
			$tem[]=$value;
		}
	}

	return $tem;

}

第一個是判斷數組的深度,我想着根據深度然後用$arr[][][]這樣的方式去填充,二維數組可以解決,但是三維呢,四維呢。。而且問題來了,

$arr1[][][]=5;

$j=str_repeat('[]', 3);

那麼用$arr1.$j是不可行的。


怎麼辦,去牛逼傳說的stackoverflow,我也溢出一下。

老外的人真牛逼,我寫問題用了3分鐘,等待有人回答用了10秒。

第一個朋友說用一個函數就行,不需要知道什麼數組深度。那麼函數就是array_walk_recursive,之前只是簡單用過array_map,array_map不能遞歸,所以他推薦用這個。

我試了一下,還是能達到部分效果,夠用了,代碼如下

$arr = array(10, 102, 199, "a"=>array('B','c','d'=>array('e','f')),'g','h'); 

array_walk_recursive($arr, function(&$value,$key){
$value= strtoupper($value);
});

var_dump($arr);

但是有意思的來了,因爲我說變成ABCDEF那樣,然後有回答的人就不樂意了,說OP說要把D也變了,OP我百度了下,可能就是樓主,編輯者的意思。

然後第一個回答我的人說,變不了key的值。

然後第二個人就咔嚓,show he the code

然後就有了以下的牛逼答案,亮瞎了。

$arr = array(10, 102, 199, "a"=>array('B','c','d'=>array('e','f')),'g','h'); 

$arr = json_decode(strtoupper(json_encode($arr)),true);

var_dump($arr);
die;

結果真的是ABCDEF ,我不知道是爲何。。

還是需要把php數組函數搞透徹再說。

另外附上地址,要翻牆:http://stackoverflow.com/questions/31114927/how-do-i-change-the-unknown-array-depth-and-change-all-of-the-letters-from-lower

ps:不要擔心自己英語low,會有人矯正。。大神啊。





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章