4

にデータがありArrayObject、単に配列を表しています。データをフィルタリングする必要があります。関数array_filter()はうまく機能します。ただし、引数としては機能しません。ArrayObjectこれで治療するための最良の方法は何ですか?フィルタリングを処理する標準機能はありますか?

例:

$my_data = ArrayObject(array(1,2,3));
$result = array_object_filter($my_data, function($item) { return $item !== 2; });

機能はありarray_object_filterますか?

4

3 に答える 3

5

それを実際の配列にエクスポートしてから、新しい配列オブジェクトを作成してみませんか?

$my_data = new ArrayObject(array(1,2,3));
$result = new ArrayObject( 
    array_filter( (array) $my_data, function($item) { 
         return $item !== 2; 
    })
);
于 2012-06-30T14:36:46.440 に答える
0

これはどう:

$my_data = new ArrayObject(array(1,2,3));
$callback = function($item) { return $item !== 2; };
$result = new ArrayObject;
foreach ($my_data as $k => $item) if ($callback($item)) $result[$k] = $item;

または、array_object_filter()関数を自分で定義することもできます。

function array_object_filter($array, $callback) {
    $result = new ArrayObject;
    foreach ($array as $k => $item) if ($callback($item)) $result[$k] = $item;
    return $result;
}
于 2012-06-30T14:30:58.097 に答える