0

私は次のMapようなものを持っています:

$m = Map {
  'sort' => 'created',
  'order' => 'desc',
}

それを文字列に変換したい:

'sort:created order:desc'

この SO answerで説明されているように、配列でこれを行うことができます:

implode(' ', array_map(($k, $v) ==> $k.':'.$v, array_keys($m), $m))

私はのドキュメントを読んでMap::items試しました:

$m->items()->map(($key, $value) ==> print($key))

しかし、これは何も出力しません。

配列のようなワンライナーを探していますが、ループはありません。

4

2 に答える 2

4

map()のパラメーターは、引数を 1 つだけ取る関数です。タイプチェッカーを実行すると、次のように表示されます。

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

于 2016-04-13T17:28:48.023 に答える
0

使用する:

implode(' ', $m->mapWithKey(($k, $v) ==> $k.':'.$v))
于 2016-04-13T17:28:09.777 に答える