1

任意の仕様によってデータが適切にフォーマットされていることを確認するために、配列のリーフ ノードをフィルター処理できるようにしたいと考えています。PHPで多次元配列の葉ノードにフィルタリング関数を適用する簡単な方法はありますか?

4

1 に答える 1

0
function filter_leaf_nodes($tree, $filter) {
    $ret = array();
    foreach ($tree as $subtree) {
        if (is_array($subtree)) {
            $ret[] = filter_leaf_nodes($subtree, $filter);
        } else if ($filter($subtree)) {
            $ret[] = $subtree;
        }
    }
    return $ret;
}

$tree = array(
    array(
        array(
            -1,
            5
        ),
        -3,
        2,
    ),
    array(
        3,
        9
    ),
    -9
);

$filter = function($node) {
    return $node >= 0;
};

var_dump(filter_leaf_nodes($tree, $filter));
于 2012-10-21T02:00:48.840 に答える