2017-04-08 74 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); 


    } 

结果是一样的。真棒!