我有一个Map
,例如:
$m = Map {
'sort' => 'created',
'order' => 'desc',
}
我想把它变成一个字符串:
'sort:created order:desc'
我可以用数组来做这件事,正如这个SO答案中所解释的:
implode(' ', array_map(($k, $v) ==> $k.':'.$v, array_keys($m), $m))
我已经阅读了Map::items
的文档,并尝试过:
$m->items()->map(($key, $value) ==> print($key))
但这什么也没印。
我正在寻找一个像有数组,没有循环的oneliner。
map()
的参数是一个只接受一个参数的函数;如果你运行类型检查器,它会告诉你:
test.php:9:20,20: Invalid argument (Typing[4039])
/tmp/hh_server/hhi_1ebd4af3/hhi/interfaces.hhi:363:27,44: Number of arguments doesn't match
test.php:9:20,20: Because of this definition
你想要的是mapWithKey()
https://3v4l.org/GF69D:
$m->mapWithKey(($key, $value) ==> print($key));
您还可以使用与用于数组的代码完全相同的代码:https://3v4l.org/mSREI
使用:
implode(' ', $m->mapWithKey(($k, $v) ==> $k.':'.$v))