0

我在使用返回值的集合映射上创建函数时遇到问题。

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);


    }

如您所见,返回 fieldNames[0] 正在被硬编码。我不知道它会收到多少个 fieldNames。我需要返回那些带有混淆 ID 的字段名。所以基本上唯一改变的是Id。这是屏幕截图。

在此处输入图像描述

如您所见,fieldNames 只是 2,但如果变为 5 或 6 会怎样。我真的不知道他们将在参数中传递多少个 fieldNames。我该如何退货。谢谢。

4

1 回答 1

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);


    }

结果是一样的。惊人的!

于 2017-04-08T22:15:31.007 回答