2017-04-08 76 views
0

我在收集地圖上使用返回值創建函數時遇到問題。Laravel 5.4收集地圖返回值

public function getCollectionFakeId($collection, $fieldNames){ 

     $optimus = $this->optimus; 

     $result = $collection->map(function($item, $key) use ($optimus, $fieldNames) { 

       return [ 
        $fieldNames[0] =>$optimus->encode($item->id), 
        $fieldNames[1] => $item->lastname 
       ]; 


     }) ; 

     dd($result); 
     return json_decode(json_encode($result), FALSE); 


    } 

正如你可以看到return fieldNames [0]被硬編碼。我不知道它會收到多少fieldNames。我需要返回這些字段名與混淆Id。所以基本上唯一改變的是Id。這是截圖。

enter image description here

正如你可以看到FIELDNAMES僅有2但如果它變得5或6。我真的不知道他們會多少字段名的參數來傳遞。我該如何回報它。謝謝。

回答

0

萬一有人會遇到這個問題。這是我的解決方案...

public function getCollectionFakeId($collection, $fieldNames){ 

     $optimus = $this->optimus; 

     $result = $collection->map(function($item, $key) use ($optimus, $fieldNames) { 

       $mapFieldNames = array_map(function($v) use ($optimus, $item) { 
        if($v == 'id'){ 
         return $optimus->encode($item->id); 
        } 
        else{ 
         return $v; 
        } 
       }, $fieldNames); 

       return $mapFieldNames; 
     }) ; 

     dd($result); 
     return json_decode(json_encode($result), FALSE); 


    } 

結果是一樣的。真棒!