我有一个Map
,例如:
$m = Map {
'sort' => 'created',
'order' => 'desc',
}
我想把它变成一个字符串:
'sort:created order:desc'
我可以使用数组执行此操作,如this SO answer:
中所述implode(' ', array_map(($k, $v) ==> $k.':'.$v, array_keys($m), $m))
我已阅读Map::items
的文档并尝试:
$m->items()->map(($key, $value) ==> print($key))
但这没有任何印刷品。
我正在寻找像阵列一样的oneliner,没有循环。
答案 0 :(得分:3)
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
答案 1 :(得分:0)
使用:
implode(' ', $m->mapWithKey(($k, $v) ==> $k.':'.$v))