0

ブロックを使用して Objective C で、または lambda を使用して C++ で実行できるのと同じ方法で、クロージャを使用して PHP >=5.4 で配列をマージしたり、配列から重複を削除したりできますか?

  • そのような関数のパラメーターとして述語/クロージャー/ブロック/ラムダを使用することは可能ですか?

すなわち:

$a = array('blah','bleh');
$b = array('blih, 'bloh');
$arr = array_merge( function() use (&$a,&$b) { return $a == $b ? true : false; } );

(上記の例は単純化しすぎています。これをオブジェクトに対して行いたいと思います)。

  • インラインで実行できますか、それとも常にクロージャーを $var として定義する必要がありますか?
  • パフォーマンスの向上はありますか、それとも同じように実行されますか?
4

1 に答える 1

2

これにはおそらく array_filter() を使用できます。私の推測では、1 つの配列をパラメーターとしてフィルター処理し、2 つ目の配列を use() として追加する必要があります。現在の値が use() で渡された配列にない場合は、それを追加できます。 http://php.net/manual/en/function.array-filter.php

$a == $b はオブジェクトではトリッキーになる可能性があるため、これはオブジェクト ofc 内の値に基づいてチェックする必要がある場合のみです;)

于 2013-03-28T16:31:56.493 に答える