PHP 7.1がthe iterable pseudo-typeを導入したことをとてもうれしく思っています。PHPが配列やトラバーサルに反復可能
このタイプのパラメータをループするだけのときには大丈夫ですが、array
または単にTraversable
を受け入れるPHP関数に渡す必要がある場合は、どうすればよいかわかりません。たとえば、array_diffを実行し、iterable
がTraversable
の場合、array
が表示されます。逆に、反復子をとる関数を呼び出すと、iterable
がarray
の場合はエラーになります。
iterable_to_array
(NOT:iterator_to_array
)とiterable_to_traversable
のようなものがありますか?
私は、この違いを処理するために私の関数内の条件文を避け、自分自身のグローバル関数を定義することに依存しないソリューションを探しています。 PHP 7.1
これは、array_pushがさまざまな量の引数をとり、...を使用してiterableを引数のリストにアンパックするため、これが機能します。スコープに余分な変数を導入してからそれを変更する必要があるため、私には受け入れられる解決策ではありません。 –
@JeroenDeDauw私はそれを知っています...それを展開しますが、array()では同じように動作しないので、何か変なことがあります。私はそれが容認できる解決策ではないことに同意する、実際には、私はそれが7.1では不可能だと思うが、私は限界(機能を定義して条件を使用しない) –