我在使用返回值在集合地图上创建函数时遇到了问题。
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。我怎么能退货呢感谢。
答案 0 :(得分: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);
}
结果是一样的。真棒!