akanehara / ginq

`LINQ to Object` inspired DSL for PHP
MIT License
193 stars 18 forks source link

selectManyのセレクタで最初に空のリストが返却されると結果も空になる #63

Closed gunjiro closed 8 years ago

gunjiro commented 8 years ago

selectManyのセレクタで最初に空のリストが返却されるとselectManyの結果も空になります。

空のリストが含まれる場合でも次のような場合は

$data = array(
    array(
        'values' => array(1, 2)
    ),
    array(
        'values' => array()
    ),
    array(
        'values' => array(3, 4)
    )
);

print_r(Ginq::from($data)->selectMany('[values]')->toList());

以下のように正常な結果が得られます。

Array
(
    [0] => 1
    [1] => 2
    [2] => 3
    [3] => 4
)

しかし、最初に空のリストがある場合

$data = array(
    array(
        'values' => array()
    ),
    array(
        'values' => array(1, 2)
    ),
    array(
        'values' => array(3, 4)
    )
);

print_r(Ginq::from($data)->selectMany('[values]')->toList());

以下のように結果は空になってしまいます。

Array
(
)
GeneralD commented 6 years ago

配列の入れ子のGinqだけでなくGinqの入れ子もtoArrayせずflattenできればなお良いと思われます。 groupByなどを使うと自然とginqの入れ子が発生するので。